如何使用git找到一个分支中但不在另一个分支中的所有提交?

时间:2012-12-13 10:52:26

标签: git

我有两个分支,直播 Master 是开发    分支并包含尚未准备好进入 live 的提交。

  • 如果在分支中进行了更改,则需要进入 live 分支然后他们从挑选到 live
  • 有时候会对 live 分支进行提交 cherry选择 master 或合并到 master

我希望能够查看 master 中的所有提交,而不是 live 中的提交,我在这里进行了很好的搜索谷歌和我正在使用它:

git log --cherry-pick --no-merges --oneline master...live

这一直有效,直到我将 live 合并到 master 中。但现在它列出了两个提交。

那么查看分支中的所有提交而不是 live 分支中的所有提交的正确命令是什么?

3 个答案:

答案 0 :(得分:25)

你非常接近。正确的命令是:

git log --cherry-pick --oneline --no-merges --left-only master...live

来自日志管理页面:

  

--left-only, --right-only

     

列表仅在对称范围的相应侧提交,即仅标记为< RESP。 > by --left-right。

     

例如,--cherry-pick -right-only A ... B省略那些来自B的提交,这些提交在A中或者是补丁相当于A中的提交。   换句话说,这列出了来自git cherry A B的+提交。更确切地说,--cherry-pick --right-only --no-merges给出了   确切的清单。

答案 1 :(得分:4)

git log master ^live --no-merges

答案 2 :(得分:2)

我最后使用结合了git patch-id和git log的简短python脚本解决了我自己的问题,脚本可以在这里找到https://gist.github.com/4565584