显示git日志时忽略合并提交

时间:2017-05-18 22:37:40

标签: git merge

我们说我有一个git分支,而且我正在处理大型功能,因此我会定期通过运行mastergit merge master保持同步。

master中的合并带来了很多不同的提交,所以当我git log我得到了我个人提交的交织历史时,这个分支"以及来自master

的几个错误提交

有没有办法只查看"这个"科?

git是否本机跟踪合并中的哪个父级是" primary"一个和哪个是"合并在"对方?如果是这样的话,应该可以遍历历史记录,只遵循" primary"每个合并点的父母对吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

你可以使用

git log origin/master.. --no-merges

所以它只显示你的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  

所以如果我站在a953ca2,合并提交,第一个父是最后一次提交在master(^1意味着这个提交的第一个父):

$ git log --pretty=format:"%h" a953ca2^1 -1
42554e5 

而第二个是HEAD在你的dev分支中将它合并到master时的位置(^2表示此提交的第二个父级):

$ git log --pretty=format:"%h" a953ca2^2 -1
b5399f7

如果您站在主人并使用--first-parent选项,它将仅遵循修订中的那些提交:

$ git log --first-parent --pretty=format:"%h" a953ca2 -4
a953ca2
42554e5
d512b35
5f2e69e