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

bin*_*ons 108 git

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

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

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

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

非常感谢

Cas*_*bel 151

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

git rm path/to/file
Run Code Online (Sandbox Code Playgroud)

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

git add path/to/file
Run Code Online (Sandbox Code Playgroud)

执行其中任何一个以解决冲突后,提交合并.

  • @Jefromi,如果我指定`-s recursive -X our`,为什么还需要`git rm`和`git add`? (2认同)

Jos*_*ber 27

除了已接受的答案之外,在"我们删除"中,如果您希望查看对已删除文件所做的更改,以便您可以在其他地方应用这些更改,则可以使用以下内容:

git diff ...origin/master -- path/to/file
Run Code Online (Sandbox Code Playgroud)

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

git diff origin/master... -- path/to/file
Run Code Online (Sandbox Code Playgroud)

  • 提醒一下:在*rebasing*期间发生冲突时,这不起作用.需要明确像`git diff mybranch @ {1} ... origin/master - path/to/file` (6认同)
  • 是!如果您不想只是吹掉正在合并的更改,这是至关重要的,例如我刚刚重命名文件或在删除文件之前移动了内容. (5认同)
  • 您还可以使用“git diff --base”(请参阅​​我的其他答案)。 (4认同)

小智 9

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

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

花了我一个月的时间来弄清楚......如果Git GUI实际上有文档就好了......


Dor*_*hal 6

评分最高的答案侧重于解决冲突的方式。

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

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

git diff --base
Run Code Online (Sandbox Code Playgroud)

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

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