Skip to main content

07.合并提交

1 合并提交

tip

合并提交就是把一个先进分支的记录以一个提交的形式合并到当前的分支上。比如保持主分支上的提交一个提交 一个完善粒度。开发的往往是新开一个分支,可以代码写到一半就下班了,这里不得不上传代码,写上一个不太好的提交。特别是写一点代码意外要换地方,不得不产生一个没用的提交信息并上传,到了新的地方开发并同步。这样的提交只是单纯为了同步下代码而已,并不是一个完善粒度的代码提交,而这这样的提交一多,再合并到主分支上,那么主分支是记录是很不好看的。很不好,所以合并提交是很必要的。

1.1 初始一个demo仓库

$ git init
初始化空的 Git 版本库于 /home/www/tmp/demo/.git/
$ echo 'the content for first commit' > index.html
$ git add -A
$ git commit -m 'init'
[master(根提交) a5a9caf] init
1 file changed, 1 insertion(+)
create mode 100644 index.html

1.2 在开发分支上有多个提交

$ git checkout -b dev
切换到一个新分支 'dev'
$ echo 'commit 1' >> index.html
$ git add -A
$ git commit -m 'commit form dev branch'
[dev 8c5d483] commit form dev branch
1 file changed, 1 insertion(+)
$ echo 'commit 2' >> index.html
$ git add -A
$ git commit -m 'commit 2 form dev branch'
[dev 9fdf10d] commit 2 form dev branch
1 file changed, 1 insertion(+)
$ git log
commit 9fdf10dd2d9405b88714fdf8e6694bc31d9eba97
Author: 吴楚衡 <wuchuheng@163.com>
Date: Fri Apr 10 15:23:57 2020 +0800

commit 2 form dev branch

commit 8c5d4833c061d2e25ecf613d1877377f9bb998cd
Author: 吴楚衡 <wuchuheng@163.com>
Date: Fri Apr 10 15:23:23 2020 +0800

commit form dev branch

commit a5a9caf8cdba3349c1eb9f615eb1ef94c696b7ec
Author: 吴楚衡 <wuchuheng@163.com>
Date: Fri Apr 10 15:12:59 2020 +0800

init
[www@iZwz9e5pkvbqcoduhq26mhZ demo]$

1.3 把分支的记录作为主分支的一个新的记录

$ git branch
* dev
master
$ git checkout master
切换到分支 'master'
$ git merge dev --squash
更新 a5a9caf..9fdf10d
Fast-forward
压缩提交 -- 未更新 HEAD
index.html | 2 ++
1 file changed, 2 insertions(+)
$ git status
# 位于分支 master
# 要提交的变更:
# (使用 "git reset HEAD <file>..." 撤出暂存区)
#
# 修改: index.html
#
$ git commit -m 'make new commit from dev change'
[master 19c9aa9] make new commit from dev change
1 file changed, 2 insertions(+)
$ git log
commit 19c9aa94f0fc02ea14f2505775b425e3c23a93e4
Author: 吴楚衡 <wuchuheng@163.com>
Date: Fri Apr 10 15:29:38 2020 +0800

make new commit from dev change

commit a5a9caf8cdba3349c1eb9f615eb1ef94c696b7ec
Author: 吴楚衡 <wuchuheng@163.com>
Date: Fri Apr 10 15:12:59 2020 +0800

init

1.4 小结

tip

dev分支上的所有修改记录先进的内容会在主分支上会作为新的修改文件保存在暂存区中,这里dev不管提交什么样的记录,只要开发者感觉凑足够一个主分支的记录,完全可以作为一个主分支的一个记录来提交.