gpt4 book ai didi

svn - 为什么将分支提交到仍未触及的主干会导致冲突?

转载 作者:行者123 更新时间:2023-12-02 00:33:44 27 4
gpt4 key购买 nike

在我的第一次大目录合并中遇到了困难,希望能找到关于为什么我会收到这些错误的线索。

我一周前从 trunk/中的代码分支出来,对 branches/myBranch 中的代码做了很多更改,并决定是时候将它们合并到 trunk/中了。主干中没有代码被触及,它与新代码分支时完全相同,所以我认为这意味着不会出现冲突。

似乎是错误的假设,据我所知,在尝试将新代码合并到主干中时会遇到一大堆冲突并报告丢失文件。有人可以解释为什么会这样吗?

这是基本事实:

  • 代码在修订版 19466 中有分支。
  • 后备箱一直没有动过。无更改(上次更改版本:19453)。
  • 该分支(不幸的是?)在本地完成,包含一些更改。
  • 我尝试使用以下命令合并来自分支 intro trunk 的更改:svn merge -r19466:HEAD branches/myBranch trunk/。 (不管我是站在后备箱里跳过最后一个参数,还是只是做上面的事情都没有关系)
  • Subversion 提示缺少文件 fooDao。! C trunk/fooDao.java

    > 本地缺失,合并时传入编辑

    这个文件在创建分支的同一提交中被重命名 (19466),但我认为 subversion 应该选择它,因为它是使用 svn move 发布的。日志显示了它的祖先:

    ...A/branches/myBranch/fooDao.java(来自/branches/myBranch/fooDato.java:19452)

  • 如果您想知道为什么即使没有代码更改,修订号也会增加,这是因为它是一个包含许多其他(事件项目)的共享存储库。

最佳答案

我遇到错误的主要原因是由于以不合理的方式创建分支。如果您正确地 分支,brainch 点将具有与主干(在那个版本中)完全相同的文件。如果在修订版 100 中创建的分支要合并到主干中,我可以使用 svn merge -r100:HEAD ../branches/myBranch ./trunk 并只获取对这些文件的更改修订。

不幸的是,在创建分支之前,我在 trunk/中进行了本地修改。这些修改被复制到新分支中,然后提交。因此,在创建分支时,myBranch 和 trunk 中的文件是不同的。为了补救这种情况,我必须在创建要合并的分支之前找到一个修订版(例如:rev99)并从那里进行合并。出现的任何冲突都可以通过选择“tf”(它们的完整)从冲突中的分支获取完整文件来简单地解决。我可以快速修复这个问题,因为树干没有动过,也没有任何变化。

总结一下:为了避免问题,通过确保正确地进行分支

关于svn - 为什么将分支提交到仍未触及的主干会导致冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5540748/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com