Case
一个开发流程示例
- Tom 从
master分支checkout出新的分支,开始自己的开发 - Tom 开发的过程中,
master分支merge了 Jack 的开发分支 - Tom 开发完成准备提交,提交之前先从
master分支同步最新的代码
master分支此时的历史
* 7708b20 2018-07-15 | Merged jack_dev into master [sting]
|\
| * 88d93d7 2018-07-15 | Jack test [sting]
|/
* 1991812 2018-07-14 | Init [sting]
tom_dev此时分支的历史
* c8a6b9a 2018-07-15 | Tom test [sting]
* 1991812 2018-07-14 | Init [sting]
同步 master 代码,对比提交线图
如果执行git pull origin master,tom_dev分支的历史大致如下:
* 3ec7859 2018-07-15 | Merge branch 'master' into tom_dev [sting]
|\
| * 7708b20 2018-07-15 | Merged jack_dev into master [sting]
| |\
| | * 88d93d7 2018-07-15 | Jack test [sting]
| |/
* | c8a6b9a 2018-07-15 | Tom test [sting]
|/
* 1991812 2018-07-14 | Init [sting]
如果执行git pull --rebase origin master,则分支的历史大致如下:
* 70b2f41 2018-07-15 | Tom test [sting]
* 7708b20 2018-07-15 | Merged jack_dev into master [sting]
|\
| * 88d93d7 2018-07-15 | Jack test [sting]
|/
* 1991812 2018-07-14 | Init [sting]
最终的 master 分支
- 不使用
rebase
* 4f77792 2018-07-15 | Merged tom_dev into master [sting]
|\
| * 3ec7859 2018-07-15 | Merge branch 'master' into tom_dev [sting]
| |\
| |/
|/|
* | 7708b20 2018-07-15 | Merged jack_dev into master [sting]
|\ \
| * | 88d93d7 2018-07-15 | Jack test [sting]
|/ /
| * c8a6b9a 2018-07-15 | Tom test [sting]
|/
* 1991812 2018-07-14 | Init [sting]
- 使用
rebase
* 34b5909 2018-07-15 | Merge branch 'master' into tom_dev [sting]
|\
| * 70b2f41 2018-07-15 | Tom test [sting]
|/
* 7708b20 2018-07-15 | Merged jack_dev into master [sting]
|\
| * 88d93d7 2018-07-15 | Jack test [sting]
|/
* 1991812 2018-07-14 | Init [sting]
备注:Git hist
首先参考下面的代码配置.git/目录下的config,就可以使用git hist命令了。
[alias]
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
相对于git log,git hist可以查看更加直观的提交历史。
$ git hist
* 398acf4 2018-07-14 | Merged bug_fix into master [sting]
|\
| * 9acec19 2018-07-14 | Bug fix [sting]
|/
* 07d350a 2018-07-14 | Merged jack_dev into master [sting]
|\
| * 414d898 2018-07-14 | Feature B [sting]
|/
* 46bb77f 2018-07-14 | Merged tom_dev into master [sting]
|\
| * 72cd8b8 2018-07-14 | Feature A [sting]
|/
* 1003296 2018-07-14 | Init [sting]
小结
本文通过一个简单的 case,介绍了pull --rebase的作用。
可以看到通过使用rebase,可以让提交记录更加清晰。