如何在Git中列出所有未合并的更改?

175

我为各种主题创建了分支,并且不定期删除它们,现在我有大约50个分支。

我尝试删除这些分支,但其中一些分支具有未合并的更改。

我的要求是能够查看存储库中任何分支与master分支不同的确切更改。是否有办法做到这一点?

5个回答

306

列出未合并到主分支的分支及其提交记录:

git branch --no-merged master

列出相关的提交:

git cherry -v master <branch>

9
“git branch --no-merged master” 不显示远程分支 - 有什么提示可以查看远程分支? - Peter Toft
34
添加-a标志以包括远程分支。 - gawi
2
请注意,通过压缩合并合并的分支仍将显示差异,即使没有差异也是如此。 - Michael Scott Asato Cuthbert
1
添加 -a 参数将显示本地和远程分支,使用 -r 则仅显示远程分支。 - pafivi
提交哈希前面的 + 和 - 符号代表什么意思? - Robert Niestroj
显示剩余2条评论

41

当我试图记住...的语法时,我遇到了这个问题。

git log <branch> --not master --stat

这将显示提交到<branch>但未合并到主分支的提交。--stat将包括提交更改的文件。您也可以使用此功能通过将master替换为其他分支名称来比较任何两个分支。


7
这个问题已经有非常好的答案了,但我认为还有一个值得记录的答案:
列出所有在任何分支上提交的,但尚未与主分支合并的提交:
git log --all --not master

或者,等价地说:
git log --all ^master
< p > --all选取所有分支,您无需列出它们,--not master^master从选择中删除master。

2
git log --all --not master --graph --pretty=format:"%C(auto)%h%d%Creset %C(cyan)(%ci)%Creset %C(green)%cn <%ce>%Creset %s" --name-status --date=short - pavol.kutaj

0
对于PowerShell用户,这是以上内容的一个小结合。如果需要,请将master替换为main。将其粘贴到您的shell中进行测试。
$notMergedList = (git branch --no-merged master) -replace " ", ""
ForEach($branchItem in $notMergedList) {
  write-host "~~> branch: $branchItem" -Foregroundcolor DarkCyan
  git cherry -v master $branchItem }

-8

使用gitk可以轻松地获取分支的概览。


15
如果您的分支数量超过20个,那么就不行。 - Peter Toft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接