查看 Git 分支是否已经合并, 有什么好办法?

多人开发使用了较多分支, 有些还没觉得及时清理, 结果积累下来不少,
有些比较容易看出来手动删掉, 有些就不大清楚了...
往 commit history 里看会比较麻烦, 有没有比较方便查看的办法?

另外合并的话, 有时候合的是 git merge branch-a,
有时候合并会是 git merge origin/branch-a,
查看是否合并是否可以不受这个区别的影响?

阅读 22.4k
4 个回答

试试:
- git branch --merged
- git branch --no-merged

也可以试试 git log | grep branch_name

推荐一个工具 tig
效果如下:
请输入图片描述

大写的 M 代表的就是 merge 操作,这样看应该很清晰吧,每个分支的历史都可以看得清清楚楚,当然号称 git 浏览器的 tig 的作用不仅如此,还有更多强大的地方,非常值得一用。

分支如果是显式merge,直接git branch -d xxx就行,如果没有显示merge,这个命令是不执行的。

但是有些分支可能被隐式merge,也就是它的代码被合并到了主干(merge --squash/rebase),但是没有执行过显式的merge,这时候怎么办呢。比如这个分支叫feature,主干是master

git checkout feature
git rebase master(以master为基 rebase)
解决下冲突
这时候feature分支就是以master HEAD为基的分支了,之后是merge还是丢弃随你便。。
当然rebase后发现feature和master 指向同一个HEAD,那么这个分支肯定是合并过的,直接-d删掉即可
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏