在 SourceTree 中,在另一个推送之前合并回 Git 的分支意味着什么

What does a branch that merged back in Git in front of another push means in SourceTree

在下图中,黄色和紫色的分支都已经脱落并合并回主分支。我无法让分支完全合并回去。

是因为我用红色标记的推送吗?也许是因为他们落后了?以紫色分支为例,我认为发生的事情是 purple branch 是原始的 master,但不在我的存储库中。我在提交 'Optimization' 时忘记将其拉下,因此它变成了一个单独的分支。然后 'New sproc and table' 再次成为 master。

我该如何解决这个问题?

如果您希望您的历史是线性的,那么您想要研究快进合并。查看这个 other Whosebug thread 深入了解快进。

如果您有兴趣返回并修复现有历史记录,请告诉我,我可以根据建议编辑此答案,但根据我的经验,尝试修改 git 历史记录比尝试修改更令人头疼它最终是值得的。

编辑

再看一下,我想说的是,为了以后避免这种情况,您应该在 git commit 之前尝试 运行 git fetchgit pull 以确保您正在跟踪远程分支并拥有最新信息。如果拉取后存在合并冲突,那么最好尝试存储本地更改,运行拉取,然后根据远程分支的最新更改重新应用更改。

两个分支没有排序。比如commit Optimization不是commit前面的意思New sproc and table因为它们在两个独立的分支机构。

如下图,B 表示您标记的提交 OptimizationCG 表示从 Changes filter to exclude schemas 到 [=13= 的提交]:

A---B  master
 \
  C---D---E---F---G purple

当您将 purple 分支合并到 master 时,来自 purple 分支的更改将应用​​到 master 分支并进行新提交(如 H stand对于提交 Merge branch 'master' of https://bitbucket):

A---B---------------H  master
 \                 /
  C---D---E---F---G purple

更多关于git合并的细节,可以参考git书中的Branching and Merging