【问题标题】:Visual Studio rebase v git rebaseVisual Studio rebase v git rebase
【发布时间】:2019-05-23 12:31:37
【问题描述】:

我们发现,当我们执行 git rebase 与 Visual Studio(2019,Enterprise)rebase 时,我们会得到不同的结果。请注意,我们通常是 git 新手

我们有一个名为(例如)SomeFeature 的分支,然后我们有自己的分支来处理它:

  • SomeFeature_mike
  • SomeFeature_tony

Mike 在 SomeFeature_mike 上工作,进行更改,发出拉取请求并将他的工作放入 SomeFeature,tony 现在想从 SomeFeature 中变基,以便获得 Mike 的更改

使用 Visual Studio 有时会出现合并错误,但我们不确定原因。如果我们这样做

git checkout SomeFeature_tony
git rebase origin/SomeFeature

然后它似乎工作了

怀疑是在 rebase 和同步之后,我们没有强制推送 SomeFeature_tony 分支,但这并没有回答核心问题,为什么 Visual Studio 做的事情与 git 不同?

【问题讨论】:

  • 我可以确认您通过命令行进行变基的语法是正确的。我给人们的建议是坚持使用命令行,避免使用 Git GUI :)

标签: git azure-devops visual-studio-2019


【解决方案1】:

在我的认知中,我认为 Visual Studio 'rebase' 选项和 'git rebase' 没有区别。但是 'merge' 和 'rebase' 不同。

当您将 SomeFeature_tony 合并到 SomeFeature 时,它​​会将 SomeFeature 分支与您当前在 SomeFeature_tony 中的提交合并并形成一个新的提交。就像下面的图片: enter image description here

当你变基时,它会在 SomeFeature 后面提交 SomeFeature_tony。就像下面的图片: enter image description here

当您将一个分支合并到另一个分支时,一个分支中提交的文件更改可能与另一个分支的更改发生冲突。您可以像在 Visual Studio 中解决 merge conflicts 一样解决它。您也可以执行“git add”暂存合并的更改,然后使用 'git rebase --continue' 继续 rebase。

希望得到帮助,祝您有愉快的一天:)

【讨论】:

    【解决方案2】:

    在执行“git merge”之前执行“git rebase”与直接执行“git merge”不同。特别是如果您使用快进合并(这将使您的合并 [master] 分支保持整洁:))。

    a-b-c-d [master]
      \x-y-z [feature]
    

    直接合并

    a-b-c-d--m   [master]
      \x-y-z/    [feature]
    

    rebase + 合并

    1) rebase
        a-b-c-d [master]
               \x-y-z [feature]
    2) merge
        a-b-c-d-x-y-z [master & feature]
    

    在“直接合并”和“变基+合并”中看到合并约束的方式有点不同(即使最终状态/“应该”相同)。 在一种情况下,您将双方的所有修改增量应用于公共点并检查冲突。 在另一种情况下,您将修改增量移动到新位置。

    我会推荐最后一个解决方案,因为它允许在 rebase 之后进行测试,就像在合并之后一样。

    建议大家阅读https://www.atlassian.com/git/tutorials/comparing-workflows

    因此,即使在合并之前使用您的 IDE rebase 以获得与您的 cmd 行相似的结果。请注意,您的 IDE 可能设置了很多可能影响 git 命令的选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 2022-07-11
      • 2015-03-21
      • 2013-03-14
      • 1970-01-01
      相关资源
      最近更新 更多