我想列出仅属于特定分支的所有提交。
通过以下内容,它列出了来自分支的所有提交,也列出了来自父级(master)的所有提交
git log mybranch
我发现的另一个选择是排除 master 可以访问的提交并给我我想要的,但我想避免知道其他分支名称的需要。
git log mybranch --not master
我尝试使用 git for-each-ref
,但它也列出了 mybranch,所以实际上它排除了所有:
git log mybranch --not $(git for-each-ref --format '^%(refname:short)' refs/heads/)
更新:
我正在测试我不久前发现的一个新选项,直到现在看来这可能就是我要找的东西:
git log --walk-reflogs mybranch
更新(2013-02-13T15:08):
--walk-reflogs 选项很好,但我检查过 reflogs 是否有过期时间(默认 90 天,gc.reflogExpire)。
我想我找到了我要找的答案:
git log mybranch --not $(git for-each-ref --format='%(refname)' refs/heads/ | grep -v "refs/heads/mybranch")
我只是从可用分支列表中删除当前分支,并使用该列表从日志中排除。这样我就只会得到仅由 mybranch 达到的提交。
最佳答案
听起来你应该使用 cherry
:
git cherry -v develop mybranch
这将显示所有包含在 mybranch 中的提交,但不在 develop 中。如果您不选择最后一个选项 (mybranch),它将改为比较当前分支。
正如 VonC 所指出的,您总是在将您的分支与另一个分支进行比较,因此了解您的分支然后选择要比较的分支。
关于Git log 仅获取特定分支的提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14848274/