18.4.4 将user1/getopt分支合并到主线

既然开发者user1负责的功能开发完成了,那就合并到开发主线master上吧,这样测试团队(如果有的话)就可以基于开发主线master进行软件集成和测试了。具体操作过程如下。

(1)为将分支合并到主线,首先user1将工作区切换到主线,即master分支。


$git checkout master

Switched to branch 'master'


(2)然后执行git merge命令以合并user1/getopt分支。


$git merge user1/getopt

Updating ebcf6d6..0881ca3

Fast-forward

src/main.c|41++++++++++++++++++++++++++++++++++++——-

1 files changed,36 insertions(+),5 deletions(-)


(3)本次合并非常顺利,实际上合并后master分支和user1/getopt指向同一个提交。这是因为合并前的master分支的提交就是usr1/getopt分支的父提交,所以此次合并相当于将分支master重置到user1/getopt分支。


$git rev-parse user1/getopt master

0881ca3f62ddadcddec08bd9f2f529a44d17cfbf

0881ca3f62ddadcddec08bd9f2f529a44d17cfbf


(4)查看状态信息可以看到本地分支和远程分支的跟踪关系。


$git status

On branch master

Your branch is ahead of 'origin/master' by 1 commit.

#

nothing to commit(working directory clean)


(5)上面的状态输出中显示本地master分支比远程共享版本库的master分支领先,可以运行git cherry命令查看哪些提交领先(未被推送到上游跟踪分支中)。


$git cherry

+0881ca3f62ddadcddec08bd9f2f529a44d17cfbf


(6)执行推送操作,完成本地分支向远程分支的同步。


$git push

Counting objects:7,done.

Delta compression using up to 2 threads.

Compressing objects:100%(4/4),done.

Writing objects:100%(4/4),689 bytes,done.

Total 4(delta 3),reused 0(delta 0)

Unpacking objects:100%(4/4),done.

To file:///path/to/repos/hello-world.git

ebcf6d6..0881ca3 master->master


(7)删除user1/getopt分支。

既然特性分支user1/getopt已经合并到主线上了,那么该分支已经完成了历史使命,可以放心地将其删除。


$git branch-d user1/getopt

Deleted branch user1/getopt(was 0881ca3).


开发者user2对多语种支持功能有些犯愁,需要多花些时间,那么就先不等他了。