【问题标题】:Merge branches in GIT after migration from TFS从 TFS 迁移后在 GIT 中合并分支
【发布时间】:2020-05-18 00:52:34
【问题描述】:

我们的 TFS 存储库有一个分支“Main”。然后我们将其分支到另一个“Main-MERGE”。两者都是长期分支,但在某些方面我们进行了一些合并。一切正常。

现在我们使用 git-tfs 将整个存储库迁移到 GIT。一切似乎都很好,我们正在 GIT 的两个分支上工作。

好吧,现在我们决定将“Main-MERGE”->“Main”合并为只有一个“master”分支。但这似乎是不可能的。使用合并没有冲突,结果不符合预期。似乎是重写然后合并。

这是否意味着,当分支迁移到 TFS 时,无法像在 TFS 中那样合并文件?历史上一切似乎都很好。迁移的提交似乎与父母有关。如何找到问题并合并分支?

【问题讨论】:

    标签: git tfs git-merge tfvc git-tfs


    【解决方案1】:

    更新:

    您应该能够合并正常迁移后所做的提交。就像您正在开发一个新的 git 存储库一样。对于从 TFS 迁移的其他较旧的提交,您将能够看到它们的历史信息。但是您无法合并单个提交,它们在您的 Azure DevOps 存储库中作为一个新的提交绑定在一起。

    Op 最终将更改返回到 TFS,然后合并并迁移回 GIT。花了一些时间,但没关系。


    TFVC 和 Git 的合并有一些区别:

    • TFVC 中的合并发生在文件级别,而不是整个存储库。 您只能将一个分支中已更改文件的子集合并到 另一个,然后将剩余的更改文件合并到后续 变更集。
    • 在 Git 中,合并会影响整个存储库,您看不到 两组单独的更改合并为一个。

    在规划迁移时,您应该为 Git 选择新的分支策略。

    不知道为什么在迁移后无法在 Git 中执行合并。建议你仔细检查你的整个过程,如果有遗漏或错误。您可以通过分步门户参考此博客:Migrating from TFVC to Git (for large repositories)

    但是在您的情况下,因为您将合并这两个分支并且在您的 Git 存储库中只有一个“主”分支。

    更好的方法是在从 TFVC 迁移到 Git 之前进行合并。您可以首先在 TFVC 中拥有唯一的“主”分支。之后,您可以在 Git Repo 中基于迁移的 master 分支创建一个分支。

    此外,因为通过这种方式只迁移了一个分支。仅迁移主分支支持基于主题分支的工作流。您也可以考虑使用 TFVC 导入工具

    有关从 TFVC 迁移到 Git 的更多详细信息,请查看我们的官方教程here

    【讨论】:

    • Repos 已根据文档以标准方式使用 tfs git 迁移。没关系。没有其他办法。但似乎只能从 git repo 中的提交中进行合并。所有其他 TFS 提交都无法合并。我试图获得最新分支版本的祖先提交,它是来自 git 的第一次提交。我无法将它与旧提交合并。
    • 嗨猛禽,很抱歉后来的回复。这应该是预期的行为,您应该能够合并正常迁移后所做的提交。就像您正在开发一个新的 git 存储库一样。对于从 TFS 迁移的其他较旧的提交,您将能够看到它们的历史信息。但是您无法合并单个提交,它们在您的 Azure DevOps 存储库中作为一个新的提交绑定在一起。
    • 我希望我在迁移 TFS 存储库之前就知道它 :-) 应该有一些信息来警告所有人,这是不可能合并迁移的分支的。好的,我花了一些时间将更改恢复到 TFS,然后合并并迁移回 GIT。花了一些时间,但没关系 :-) 谢谢所有信息。
    • 嗨@Raptor 感谢您的友好更新。很高兴听到问题解决了。对任何不便表示歉意。 Git-TFS 是第三部分扩展。此外,我们会做更多的事情来让产品变得更好。同时,如果我的回复有帮助或给出了正确的方向。感谢您将其标记为答案,这也将帮助社区中的其他人。
    猜你喜欢
    • 2014-10-20
    • 2021-07-30
    • 2012-01-23
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 2018-02-22
    • 2011-02-21
    • 1970-01-01
    相关资源
    最近更新 更多