繁体   English   中英

是否可以将解决方案修改为 git 中的合并冲突?

[英]Is it possible to revise the resolution to a merge conflict in git?

我正在使用 git(使用 gitkraken)与合作者一起处理 tex 文件。 我们在同一个分支上工作,当我们中的一个人将我们的最新工作推送到该分支时,在某些时候出现了一些合并冲突。 从那以后,我们一直在处理这个文件,但我们意识到我们想要“重做”解决来自几次提交的合并冲突。

有没有干净的方法来做到这一点?

我想到的一件事是复制有问题的文件版本(只有一个感兴趣的文件),然后覆盖文件的当前版本,然后将该文件推送到当前分支,但恐怕这将覆盖自有问题的原始冲突以来的一些更改(我们希望保留)。 另一种方法是复制具有我们希望保留的某些更改的旧版本,然后使用差异工具有选择地合并我们希望更改的内容。

最后一个选项是我能想到的最好的方法。 有没有更好的办法?

每次提交——包括合并提交——只是保存所有文件的完整快照。

一旦你与其他人合作,通常不值得花很多精力回去“修复”以前的提交。 事实上,这在技术上是不可能的:你不能改变任何现有的提交。 您最终要做的是提供新的和改进的替代提交,以代替原始提交。 例如,假设:

...--I--J
         \
          M--N--O   <-- branch (HEAD)
         /
...--K--L

是当前的情况,即通过JL现有提交合并为M ,并且您和他们已经在M之上构建了NO 您现在发现由于某些冲突的错误解决,存储在合并提交M中的快照中存在“错误”。

制作M的更正版本的唯一方法是进行新的合并提交, M' (有几种方法可以做到这一点。)结果是:

...--I--J__
        |  \
        |   M--N--O   <-- branch
         \ /
          x
         / \
...--K--L---M'  <-- newbranch (HEAD)

也就是说,即使您现在在这个新的替换分支newbranch上进行了新的和改进的合并M' ,错误合并M仍然存在 您现在还需要将NO复制到新的和改进的N'O'

...--I--J__
        |  \
        |   M--N--O   <-- branch
         \ /
          x
         / \
...--K--L---M'-N'-O'  <-- newbranch (HEAD)

现在你需要让每个人——你和其他人——停止使用旧链, MNO如名称branch ,并开始使用链, M'-N'-O' 您的Git 中,您可以删除名称branch并将newbranch重命名为branch 他们的Git 中,他们必须做同样的事情。 每个人都必须同时改变。 这往往需要大量工作。

承认过去有错误通常会更好。 O上进行新的提交以解决问题:

...--I--J
         \
          M--N--O--P   <-- branch (HEAD)
         /
...--K--L

每个人都可以像往常一样拿起新的提交P并继续像往常一样工作。 当然,提交MNO有糟糕的快照......但那又怎样? 坏事总是发生; 版本控制不是为了防止坏东西,而是让你纠正它。 你已经更正了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM