git - 删除本地但在远程存在文件时合并冲突

时间:2010-11-30 22:45:24

标签: git

我是git的新手,想知道如何进行合并,在本地仓库中,我删除了主分支上的几个文件,但这些文件存在于远程主分支中。

执行git-merge后,它会显示已发生的冲突。

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

如何阻止这些文件发生冲突? 有没有一种使用git gui的简单方法?

非常感谢

6 个答案:

答案 0 :(得分:150)

您应该根据需要解决冲突。如果该文件确实应该被删除,并且您将该更改发布到原始文件,请将其删除:

git rm path/to/file

如果文件实际上应该被跟踪,请添加它(工作树中的版本将是来自原点的版本):

git add path/to/file

完成其中任何一项以解决冲突后,提交合并。

答案 1 :(得分:25)

作为已接受答案的补充提示,在“我们删除”中,如果您希望查看对已删除文件所做的更改,以便您可以应用这些您可以使用其他地方的更改:

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

如果它是“被他们删除”的情况,并且您希望看到更改以便将其应用到其他地方,则可以使用:

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

答案 2 :(得分:9)

在Git GUI中,选择冲突的文件,然后右键单击显示冲突文本的主文本区域。

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

花了我一个月才弄明白......如果Git GUI实际上有文档......那就太好了。

答案 3 :(得分:0)

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

  • 使用Git Staging视图。
  • 双击未分期更改上显示的每个文件以打开比较器
  • 点击"从左到右复制所有"图标
  • 保存文件(它将从未分页的列表中消失)

答案 4 :(得分:0)

评价最高的答案集中在解决冲突的方法上。

在此之前,您可能想知道远程控制器在本地删除的文件中进行了哪些更改。

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

MyAppState

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

  

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

答案 5 :(得分:0)

this useful answer to a related question中所述,您可以使用git mergetool来启动一个对话框,从中可以选择是要获取文件的修改版还是删除版。