找到未合并的Git分支?

flu*_*978 264 git git-merge branching-and-merging

我有一个包含许多分支的Git存储库,其中一些已经合并而另一些则没有.由于分支数量非常大,如何确定哪些分支尚未合并?我想避免必须进行"章鱼"合并并重新合并已经合并的分支.

Amb*_*ber 440

试试这个:

git branch --merged master
Run Code Online (Sandbox Code Playgroud)

它完成它在锡上所说的内容(列出已合并到的分支master).您还可以使用以下方式提取反向:

git branch --no-merged master
Run Code Online (Sandbox Code Playgroud)

如果你没有指定master,例如..

git branch --merged
Run Code Online (Sandbox Code Playgroud)

然后它会显示已经合并到当前的分支HEAD(所以如果你打开master,它相当于第一个命令;如果你打开foo,它相当于git branch --merged foo).

您还可以通过指定-r标志和要检查的ref来比较上游分支,可以是本地或远程:

git branch -r --no-merged origin/master
Run Code Online (Sandbox Code Playgroud)

  • @CraigOtis它将不再出现在列表中.`--merged`只列出*完全*合并到给定分支的分支. (9认同)
  • 如果将`foo`合并为`master`,它将出现在`git branch --merged master`列表中.但是如果你再次犯下'foo`会发生什么?它是否不再出现在该列表中,或者它是否存在,即使它有新的提交,它在某一点*合并为`master`? (5认同)
  • 想象一下......一个易于理解和使用的git答案! (4认同)
  • 有没有办法在不检查分支的情况下获取列表?就像指向服务器然后获取列表一样? (2认同)
  • 正如我发现的,“gitbranch --no-merged master”仅显示我的本地分支。它没有显示任何未在我的计算机上签出并由其他人创建的分支。 (2认同)

Nem*_*oXP 54

您还可以使用-r参数显示未合并到master中的远程分支:

git branch -r --merged master

git branch -r --no-merged
Run Code Online (Sandbox Code Playgroud)

  • 或者`-a`同时看到远程和本地 (17认同)

Ada*_*ruk 28

如果已经合并了分支,则再次合并它将不会执行任何操作.因此,您不必担心已经合并的"重新合并"分支.

要回答您的问题,您可以简单地发布

 git branch --merged
Run Code Online (Sandbox Code Playgroud)

看到合并的分支或

 git branch --no-merged
Run Code Online (Sandbox Code Playgroud)

看到未分裂的分支.您当前的分支是隐含的,但如果您愿意,您可以指定其他分支.

 git branch --no-merged integration
Run Code Online (Sandbox Code Playgroud)

将显示尚未合并到integration分支的分支.