假设我有一个git分支,我正在研究一个大型功能,所以我会定期master通过运行来保持它的最新状态git merge master.
合并master会带来很多不同的提交,所以当我这样做时git log,我在"这个分支"上得到了我个人提交的相互交织的历史,还有一些错误的提交来自master
有没有办法只查看"this"分支的历史记录?
git本身是否跟踪合并中的哪个父级是"主要"父级,哪个父级"合并"到另一个中?如果是这样,应该可以遍历历史记录,只跟随每个合并点的"主要"父母对吗?
谢谢!
您可以使用
git log origin/master.. --no-merges
Run Code Online (Sandbox Code Playgroud)
所以它只会显示你的dev分支中不在master中的提交.此外,使用该标志,--no-merges它不会打印具有多个父级的提交.
你的第二个问题的答案是肯定的,在合并提交中,基础分支"是"第一个父,而你正在合并它的分支"是"第二个(以简单的方式放置); 因此,在查找修订时,只能跟随第一个父级,您可以使用该标志--first-parent.
这意味着如果你有这个历史:
* a953ca2 Merge remote-tracking branch 'origin/WildBranch'
|\
| * b5399f7 Commit to WildBranch: 1483140838
| * 30f181d Commit to WildBranch: 1483140837
| * 5f18ce9 NEW BRANCH: WildBranch
* | 42554e5 Commit to master: 1483140840
* | d512b35 Commit to master: 1483140839
|/
* 5f2e69e Commit to master: 1483140836
Run Code Online (Sandbox Code Playgroud)
因此,如果我站在a953ca2合并提交中,第一个父级是在master中完成的最后一次提交(^1意味着此提交的第一个父级):
$ git log --pretty=format:"%h" a953ca2^1 -1
42554e5
Run Code Online (Sandbox Code Playgroud)
而第二个是当你将它合并到master时,HEAD瞄准你的dev分支的地方(^2意味着这个提交的第二个父级):
$ git log --pretty=format:"%h" a953ca2^2 -1
b5399f7
Run Code Online (Sandbox Code Playgroud)
如果你站在主人并使用该--first-parent选项,它将只遵循修订中的那些提交:
$ git log --first-parent --pretty=format:"%h" a953ca2 -4
a953ca2
42554e5
d512b35
5f2e69e
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |