为什么git branch --merged不显示所有合并的分支?

时间:2019-07-03 22:38:28

标签: git

我创建了一个功能分支,然后为其创建了PR。我的公关被接受并合并。 PR说,“可以安全删除分支。”但是当我在主分支上执行git branch --merged时,看不到合并的分支。我做错了什么?

3 个答案:

答案 0 :(得分:1)

这是一个不知道确切工作流程就很难回答的问题。

我认为,自从您“创建PR”以来,您就分叉/克隆了一个非本地存储库。然后,您在本地存储库中创建了一个新分支,进行了更改以添加功能,并将这些更改提交到了本地功能分支上。

除了有点阴暗。您可以采取以下几个步骤:

  1. 您说您提交了PR,但您没有说过曾经将功能分支与本地主分支合并。这表明您可能正在遵循工作流程like this one。如果是这种情况,并且您在 local 存储库中运行git branch --merged,则看不到列出功能分支的原因是您从未将功能分支合并到在您本地存储库中。 IMO,这是最可能的情况。尝试从本地master分支运行git pull <name of your remote--probably origin> master,然后再次尝试运行git branch --merged

  2. Fast-forwarding 可以引起一些混乱,尽管它不会单独造成您要描述的问题。

  3. 您始终可以在给定分支上运行git log来查看其完整的提交历史记录。您可以检查主数据库的提交历史记录,并将其与源/主数据库的提交历史记录进行比较,以发现差异。

希望这会有所帮助!

答案 1 :(得分:1)

我也一直在为此苦苦挣扎。 我们正在使用 gitlab's MR flow,这可能是最简单的基于合并的 git flow。

我注意到我们在合并 MR 时选择 Squash Commits。 因此,这会影响 git 历史记录并阻止 --merged 标志按预期工作。

答案 2 :(得分:0)

我遇到了类似的问题,当功能分支被合并到 develop 并且开发被合并到 master 时。此类分支未显示

git branch --merged master, 
but shown for
git branch --merged develop

但最好使用 How can I delete all Git branches which have been merged? 中推荐的 -r 标志

远程 git 清除:

git branch -r --merged | grep -v '\*\|master\|develop\|release' | sed 's/origin\///' 
| xargs -n 1 git push --delete origin