Git-merge 冲突当本地被删除但文件存在于远程时

我是非常新的 git 和想知道我应该如何去进行合并,在本地回购,我已经删除了几个文件的主分支,但这些文件存在于远程主分支。

在执行 git-merge 之后,它将显示已经发生的冲突。

使用 gitgui 它显示本地文件被删除,而远程分支文件有内容。

如何防止这些文件互相冲突? 有没有使用 git gui 的简单方法?

非常感谢

107267 次浏览

您应该按照您认为合适的方式解决冲突。如果该文件确实应该被删除,并且您将发布该更改到原始文件,请再次删除该文件:

git rm path/to/file

如果文件实际上应该仍然被跟踪,那么添加它(工作树中的版本将是原始版本) :

git add path/to/file

完成上述任一步骤以解决冲突之后,提交合并。

In Git GUI, you select the conflicted file and then right-click on the main text area where the conflicted text is shown.

在出现的上下文菜单中,您可以选择“远程”或“本地”。因此,如果一个文件被远程删除,您可以选择“远程”在本地传播删除,反之亦然。

我花了一个月才弄明白... 如果 Git GUI 真的有文档就好了..。

在 EGit 我也发现了问题,我的解决方案是:

  • 使用了 Git 分期视图。
  • Double clicked on each files shown on unstaged changes to open comparator
  • 点击“复制所有从左到右”图标
  • 保存文件(它将从非暂存列表中消失)

“被我们删除”中,如果您希望看到对已删除的文件所做的更改,以便您可以在其他地方应用这些更改,那么除了已接受的答案之外,还有一个附加提示,您可以使用:

git diff ...origin/master -- path/to/file

如果这是一个 "deleted by them"场景,并且您希望看到更改,以便您可以在其他地方应用它们,您可以使用:

git diff origin/master... -- path/to/file

最佳答案集中在解决冲突的方法上。

在此之前,您可能想知道远程在本地移除的文件中更改了什么。

为此,您可以通过以下方式查看更改:

git diff --base

来自 https://git-scm.com/docs/git-diff#Documentation/git-diff.txt--1--base

将工作树与“基本”版本[ ... ]进行比较。索引只包含未合并条目的这些阶段,即在解决冲突时。

这是一个相关问题的有用答案所述,您可以使用 git mergetool启动一个对话框,在这个对话框中,您可以选择是要获取文件的修改版本还是删除版本。