分支
显示分支一览表
git branch
*表示当前我们所处的分支
创建&切换分支
git checkout -b
- 切换到feature-A分支,并进行提交
git checkout -b feature-A
该语句等同于如下两条命令:
1.git branch feature-A
2.git checkout feature-A
在分支feature-A中修改文件,采用如下的方式,将会添加修改到feature-A分支中,而不会影响master分支:
git add + 文件
git commit -m “Add feature-A”
(注意:如果不提交修改,直接切换到master分支,将会把修改同步到master中) - 切换回主分支
git checkout master - 切回到上一个分支
git checkout -
特性分支
(特性分支,集中实现单一特性(主题),除此之外不进行任何作业的分支)
主干分支
通常将master分支作为主干分支,主干分支中并没有开发到一半的代码,可随时供人查看。拥有多个版本时,主干分支也有多个。
合并分支
git merge
首先切换到主干分支
git checkout master
合并分支,加上–on-ff参数在历史记录中明确记录下本次分支合并
保存并退出后,feature-A中的内容就保存到master中了
以图表形式查看分支
git log --graph
更改提交的操作
回溯历史版本
git reset
- 回溯到feature-A分支前
要让仓库的HEAD(指向当前分支中最新一次提交的指针)、暂存区、当前工作树回溯到指定状态,使用:
git reset --hard + 目标时间点的哈希值 - 创建fix-B特性分支
git checkout -b fix-B
- 推进至feature-A分支合并后的状态
git reflog -> 查看当前仓库的操作日志。
git log 只能查看以当前状态为终点的历史日志
git reset --hard + 指定时间节点的哈希值
消除冲突
- 合并fix-B
feature-Af分支的更改与fix-B分支的更改发生了冲突。 - 查看并解决冲突部分
=======之上是当前HEAD的内容,下面是要合入的内容
处理冲突
- 提交冲突解决之后的内容
git add 与 git commit
更改提交信息
git commit --amend ,修改上一条提交信息
压缩历史
git rebase -i
- 创建feature-c分支
git checkout -b “faeture-c”
git commit -am “修改信息”(一次性完成add和commit) - 修正拼写错误
在文件中修改拼写错误之后,再次git commit -am “修改信息” - 更改历史
git rebase -i HEAD~2
将Fix typo的历史记录压缩到Add feature-c的历史记录中,将左侧的pick部分删除,改写为fixup。
- 合并至master 分支
git checkout master
git merge --no-ff feature-c