使用SmartGit解决git文件冲突:我们的版本与他们的版本

5
我在这里遇到了一个问题,不知道为什么,可能是我做错了什么。我正在同一个文件上工作,另一个开发人员也在上面工作。他告诉我文件已经被推送到存储库了,没问题。在拉取更改之前,我进行了提交,所以我的更改得以保存并与另一位开发人员的更改合并,但是惊奇的是,该文件给出了冲突,我不知道该如何做才能不失去另一位开发人员的更改和我的更改。如果我右键单击 => 解决冲突,我会得到这个窗口:enter image description here。那里的每个选项都是什么意思?哪一个更安全,并且可以保存两个开发人员的更改(我的和另一个人的)?
如果我打开“冲突解决器”,那么我会得到类似于这样的东西:enter image description here。但是我还是不知道该如何做才能保留两个更改,请问有什么建议吗?帮帮我?
1个回答

10

虽然我不使用smartgit,但从屏幕截图中可以看出选项的映射关系如下:

  1. 什么也不做,保留未解决的文件。选择此选项将会发生什么我并不确定。
  2. 将其他开发者的更改用作git命令:git checkout --ours -- FILE
  3. 将我的更改用作git命令:git checkout --theirs -- FILE
  4. 像你已经做的那样,打开冲突解决器。

你可能好奇为什么在“使用我的更改”时我们使用了--theirs,而在“使用他们的更改”时我们使用了--ours。这是因为你正在进行rebase操作,你正在将自己的原始更改嵌入到其他开发人员的更改上。当你进行rebase操作时,就像将你的更改保存到一个临时文件中,并将HEAD移动到远程分支(即其他开发人员的更改)的最新提交,然后在当前分支上重新播放你的更改,在这种情况下,你的更改变成了theirs

由于你想要保存两个更改,你应该手动解决所有冲突并将文件标记为已解决,然后继续进行rebase


1
如果您将文件保留为未解决状态,然后进行暂存和提交操作,那么您提交的文件中将包含冲突标记。不要问我是怎么发现这个问题的。 :-/ - Rebeccah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接