【问题标题】:Git commits appear in all branches not just the ones I specifyGit 提交出现在所有分支中,而不仅仅是我指定的分支
【发布时间】:2014-05-29 15:07:19
【问题描述】:

这可能是我如何使用 git 或如何将它与 Visual Studio 2012 集成的一个相当简单的问题。我有(或认为我有)两个主要分支:master 和 develop。

我很少接触主分支,我主要向开发分支提交,当我达到里程碑时,我将开发分支与主分支合并。如果我要引入一个新功能,我会从开发分支创建一个新的分支专长/SomeFeature。完成该功能后,我将其与开发分支合并,然后将其与主分支合并。

切换分支完全符合我的预期,我看到了旧版本的代码。但是,当我在分支可视化程序中打开 repo 时,我的所有提交似乎都在一个分支上:

我期待看到循环和合并,如下图所示:

为什么我的分支看起来不一样?为什么我的所有提交都出现在一个分支上?

【问题讨论】:

  • 你能试试其中一个内置的可视化工具,看看它是否与你在 Git Extensions 中看到的一致吗? gitk --allgit log --all --graph --decorate 应该在控制台上工作(假设你的路径中有 git)。
  • 我运行了 git log --all --graph --decorate ,它似乎与 Git Extensions 显示的内容一致。 i.imgur.com/bYwZxW1.png我并没有怀疑 Git Extensions,我想我一定是在我的分支中做错了什么,但我不明白是什么。

标签: git svn version-control github merge


【解决方案1】:

发生了什么

如果没有更多信息,很难确切知道发生了什么,但您可能会收到fast-forward merges。基本上,如果 Git 可以展平合并,它默认会这样做。您主要在 develop 中工作并将其反复合并到 master 中的工作流程使您倾向于快速合并。

(请注意,快进合并本身并没有错误。一些开发人员喜欢这种流程,并且在合并之前只通过rebaseing 他们的工作来使用这种合并策略. 其他开发人员,包括我自己,都喜欢看到功能合并的“合并气泡”。)

例如,考虑以下提交图:

[master]   A---B---C
                    \
[develop]            D---E---F

master 包含提交 ABCdevelop 包含提交 ABCDEF

此时,如果将develop 合并到master 中,Git 将默认为快进合并,从而导致

[master] [develop] A---B---C---D---E---F

发生这种情况是因为合并逻辑上会导致两个树中存在相同的提交:您正在将提交 DEF 合并到已经包含 AB 和 @ 的分支上987654347@.

如果之前的图表看起来不同,例如

[master]   A---B---C---G
                    \
[develop]            D---E---F

会发生一些不同的事情。你最终会得到这样的结果:

[master]   A---B---C---G-------H
                    \         /
[develop]            D---E---F

在这种情况下,您将获得一个新的提交 H,称为 合并提交

保持合并气泡

您可以使用--no-ff 标志将后一种行为强制为git merge。 (还有一个 --ff-only 标志来强制执行相反的行为。)从第一个示例中,git checkout master && git merge --no-ff develop 会导致类似这样的结果

[master]   A---B---C-----------G
                    \         /
[develop]            D---E---F

注意新的合并提交G

视觉工作室

这都是从 Git 的命令行角度来看的,但我注意到您使用的是 Visual Studio。我不确定如何触发 --no-ff 选项以从 VS 合并,假设您正在从该工具执行合并。可悲的是,许多图形 Git 客户端隐藏了非常有用的选项,例如此标志。

【讨论】:

猜你喜欢
  • 2016-12-24
  • 2011-08-08
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 2012-05-02
  • 2018-01-23
  • 1970-01-01
  • 2017-01-31
相关资源
最近更新 更多