Pro Git 学习笔记
Pro Git 学习笔记
文档地址:Pro Git
原文地址:PRO GIT 学习笔记
git常见命令
1、Git起步
初次运行Git前的配置
用户信息
git config --global user.name "your user name"
git config --global user.email "your email address"
文本编辑器
设置默认的文本编辑器:git config --global core.editor emacs
查看配置信息
git config --list
2、Git基础
创建Git仓库
在工作目录中初始化新仓库
git init
克隆现有仓库
git clone url
url分ssh和https两种,推荐使用ssh。
检查当前文件状态
git status
跟踪最新文件
git add 文件名或*.js/css/html...或.
忽略不想提交的文件
cat .gitignore
查看已暂存和未暂存的更新
git diff
git diff --cached
提交更新
git commit -m "提交备注信息"
跳过使用暂存区域
git commit -a "提交备注信息"
在提交时使用git commit -a就会把已跟踪的已暂存文件一起提交,跳过git add步骤,即两个命令进行合并。
移除文件
git rm
从已跟踪文件清单中移除并删除工作目录中的指定文件,先使用git status查看跟踪文件清单,再使用git rm进行精准移除。
强制移除使用git rm -f,但不推荐使用。
从远程仓库中删除文件,使用:
git rm --cached 文件名/*.文件后缀/文件夹...
移动文件
对文件重命名或移动文件,可以使用:
git mv file_from file_to
查看提交历史
git log
git log -p -2
-p选项展开显示每次提交的内容差异,用-2显示最近的两次更新。
单词层面的对比,使用:
git log -p -U1 --word-diff
这个命令在代码检查中较少使用,在图文编辑中出现较多。
显示摘要信息,使用:
git log --stat
其他有用的命令:
--pretty选项可以指定使用完全不同于默认格式的方式展示提交历史,用oneline将每个提交放在一行显示,这在提交数很大时非常有用:
git log --pretty=online
format可以定制要显示的记录格式:
git log --pretty=format:"%h - %an, %ar : %s"
常用的格式占位符写法及其代表的意义
| 选项 | 说明 |
|---|---|
%H |
提交对象(commit)的完整哈希字串 |
%h |
提交对象的简短哈希字串 |
%T |
树对象(tree)的完整哈希字串 |
%t |
树对象的简短哈希字串 |
%P |
父对象(parent)的完整哈希字串 |
%p |
父对象的简短哈希字串 |
%an |
作者(author)的名字 |
%ae |
作者的电子邮件地址 |
%ad |
作者修订日期(可以用-date=选项定制格式) |
%ar |
作者修订日期,按多久以前的方式显示 |
%cn |
提交者(committer)的名字 |
%ce |
提交者的电子邮件地址 |
%cd |
提交日期 |
%cr |
提交日期,按多久以前的方式显示 |
%s |
提交说明 |
添加ASCII字符串表示的简单图形
git log --pretty=format:"%h %s" --graph
git log 命令支持的选项
| 选项 | 说明 |
|---|---|
-p |
按补丁格式显示每个更新之间的差异。 |
--word-diff |
按 word diff 格式显示差异。 |
--stat |
显示每次更新的文件修改统计信息。 |
--shortstat |
只显示 --stat 中最后的行数修改添加移除统计。 |
--name-only |
仅在提交信息后显示已修改的文件清单。 |
--name-status |
显示新增、修改、删除的文件清单。 |
--abbrev-commit |
仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。 |
--relative-date |
使用较短的相对时间显示(比如,“2 weeks ago”)。 |
--graph |
显示 ASCII 图形表示的分支合并历史。 |
--pretty |
使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。 |
--oneline |
--pretty=oneline --abbrev-commit 的简化用法。 |
限制输出长度
按照时间作限制的命令:--since和--until
git log --since=2.weeks
搜索条件
--author显示指定作者的提交--grep搜索提交说明中的关键字--all-match同时满足这两个选项搜索条件的提交
其他常用的类似选项
| 选项 | 说明 |
|---|---|
-(n) |
仅显示最近的 n 条提交 |
--since, --after
|
仅显示指定时间之后的提交。 |
--until, --before
|
仅显示指定时间之前的提交。 |
--author |
仅显示指定作者相关的提交。 |
--committer |
仅显示指定提交者相关的提交。 |
具体示例:
git log --pretty="%h - %s" --author=gitster --since="2018-10-01" \ --before="2008-11-01" --no-merges -- t/
撤消操作
修改最后一次提交
git commit --amend
取消已经暂存的文件
git reset HEAD 文件名
取消对文件的修改
这条命令谨慎使用
git checkout -- 文件名
远程仓库的使用
查看当前的远程库
git remote
显示对应的克隆地址
git remote -v
添加远程仓库
git remote add [shortname] url
抓取仓库信息
git fetch [shortname]
从远程仓库抓取数据
此命令会从远程仓库抓取数据到本地
git fetch [remote-name]
抓取克隆的远程仓库的更新数据
git fetch origin
fetch命令只是把远程仓库的数据抓取到本地,并不会自动合并到当前工作分支
推荐使用的拉取远程仓库数据,并进行数据合并操作的命令
git pull
推送数据到远程仓库
git push origin master
查看远程仓库信息
git remote show [remote-name]
远程仓库的删除和重命名
重命名远程仓库
git remote rename
git remote rename vue react
移除远程仓库
git remote rm vue
打标签
显示已有的标签
git tag
设定条件进行搜索
git tag -l "v1.4.2.*"
新建标签
轻量级标签
git tag
含附注的标签
git tag -a
git tag -a v1.4 -m "my version 1.4"
查看相应标签的版本信息
git show v1.4
签署标签
git tag -s
git tag -s v1.5 -m "my signed 1.5 tag"
验证标签
git tag -v [tag-name]
git tag -v v1.4.2.1
后期加注标签
忘记了加注标签,只要在打标签的时候跟上对应提交对象的校验和即可
git tag -a v1.2 9fceb02
分享标签
git push origin v1.5
一次推送所有本地新增标签
git push origin --tags
技巧和窍门
自动补全
windows系统下连续按Tab键
Git 命令别名
git config --global alias.ci commit
git config --global alias.st status
Git 分支
新建testing分支
git branch testing
切换到testing分支
git checkout testing
分支的新建与合并
以上两个命令进行合并
git checkout -b testing
Git会把工作目录的内容恢复为检出某分支时它所指向的那个提交对象的快照。它会自动添加、删除和修改文件以确保目录的内容和当时提交时完全一样。
合并提交内容
git merge
git checkout master
git merge hotfix
删除工作分支
git branch -d hotfix
分支的合并
查看冲突 git status
调用可视化的合并工具解决冲突
git mergetool
分支的管理
查看各个分支最后一个提交对象的信息
git branch -v
查看哪些分支已被并入当前分支
git branch --merged
查看尚未合并的分支
git branch --no-merged
利用分支进行开发的工作流程
长期分支
特性分支
远程分支
同步远程服务器上数据到本地
git fetch origin
推送本地分支
git push origin master
在远程分支上分化出新的分支:
git checkout -b serverfix origin/serverfix
跟踪远程分支
git checkout -b sf origin/serverfix
删除远程分支
分支的衍合
整合分支方法
git merge
git rebase
从一个特性分支中再分出一个特性分支的历史
git rebase --onto master server client
git checkout master
git merge server
衍合的风险
一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。
服务器上的 Git
协议
Git可以四种主要的传输协议进行数据传输:本地协议、SSH协议、Git协议和HTTP协议。
在服务器上部署 Git
git clone --bare my_project my_project.git
把裸仓库移到服务器上
未完待续...
来源:https://segmentfault.com/a/1190000017913529
Pro Git 学习笔记的更多相关文章
- pro git学习笔记
- Git学习笔记(二) · 非典型性程序猿
远程库的使用 前面说到的都是git在本地的操作,那么实际协作开发过程中我们肯定是要有一个远程版本库作为项目的核心版本库,也就是投入生产使用的版本.这里我们以 Github为例.Github是一个开放的 ...
- Git学习笔记与IntelliJ IDEA整合
Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...
- Git学习笔记(10)——搭建Git服务器
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
- Git学习笔记(四)
一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...
- git 学习笔记6--remote & log
git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...
- 《Pro Git》笔记3:分支基本操作
<Pro Git>笔记3:Git分支基本操作 分支使多线开发和合并非常容易.Git的分支就是一个指向提交对象的可变指针,极其轻量.Git的默认分支为master. 1.Git数据存储结构和 ...
- Git学习笔记---协作的一般流程
一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...
- 【转帖】Git学习笔记 记录一下
本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...
随机推荐
- H5分享到微信好友朋友圈QQ好友QQ空间微博二维码
这是分享按钮: <button onclick="call()">通用分享</button> <button onclick="call(' ...
- H5前端的行业知识
今天咱们不说代码!咱们说点行内的只是吧!! 一.前端基本技能: 会点设计,不要求精湛,处理图片,设计个小广告是要的: 精通HTML+CSS,并能快速处理各浏览器兼容问题: 熟练掌握Javascript ...
- C#设计模式之代理模式(二)
15.3 代理模式应用实例 下面通过一个应用实例来进一步学习和理解代理模式. 1. 实例说明 某软件公司承接了某信息咨询公司的收费商务信息查询系统的开发任务,该系统的基本需 ...
- Python——追加学习笔记(二)
文件处理 # 文件内移动 seek()方法可以在文件中移动文件指针到不同的位置,offset字节代表相对于某个位置偏移量,默认为0,代表从文件开头算起,1代表从当前位置算起,2代表从文件末尾算起. s ...
- mvc做网站怎么在mvc中直接访问.html网页 [问题点数:20分]
最近用.net mvc做一个网站 我想在mvc中直接访问一个 .html页面 怎么设置一下啊 现在直接访问是404不让访问的 放到view文件夹外面...
- bzoj1965 [Ahoi2005]洗牌
Description 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联 ...
- swift的特性:扩展、协议、泛型
swift的特性:扩展.协议.泛型 扩展与继承:对象的生长方式: 协议:支持 协议->类型.类型<-协议 的双向抽象: 泛型:
- 【[AH2017/HNOI2017]礼物】
题目 又是我不会做的题了 看看柿子吧 \[\sum(a_i+c-b_i)^2\] 最小化这个柿子 之所以不写下标是因为我们这个\(\{a\},\{b\}\)可以循环同构 那就开始化吧 \[\sum(a ...
- 从命令行运行Jmeter及jmeter参数说明、Html报告生成
为什么要命令行执行脚本,主要有以下三点: 1) 图形化界面消耗更多资源,CPU和内存 2) 图形化界面不支持大型的负载测试和性能测试 3) 命令行测试支持持续集成,例如放到Jenkins这样的CI工具 ...
- 并发队列 – 有界阻塞队列 ArrayBlockingQueue 原理探究
一.ArrayBlockingQueue类图结构 如图ArrayBlockingQueue内部有个数组items用来存放队列元素,putindex下标标示入队元素下标,takeIndex是出队下标,c ...