git merge"被我们删除"

kri*_*ris 25 git merge

我正在做一个大合并.我的分支中的repo中删除了很多文件,在进行合并时,我希望对所有这些文件保留此更改.还有一些文件需要显式合并,我打算用git mergetool它们来合并它们.

我希望保留所有已删除文件的"删除我们"更改(即文件应保留删除).我想解决的其他合并冲突.
有没有办法告诉git保持删除的文件被删除?

Tim*_*sen 14

这是部分解决方案:

  1. 手动解决所有未删除的合并冲突,无论如何都要做

  2. 键入git diff --name-only --diff-filter=U以获取冲突中所有剩余文件的列表.这些文件必须是您要删除的文件.将删除的文件列表另存为filesToRemove.txt

  3. 然后cat filesToRemove.txt | xargs git rm删除所有文件.

  • 如果您确信git diff命令中的列表是正确的,则可以跳过临时文件并运行`git diff --name-only --diff-filter = U | xargs git rm` (5认同)

Shu*_*ary 11

一行修复:

git diff --name-only --diff-filter=U | xargs git rm
Run Code Online (Sandbox Code Playgroud)

  • 每当你必须多次按下相同的键时,你可以将"yes d"的输出管道传输到`git rm`. (3认同)
  • 这是不正确的,因为它将删除所有冲突的文件 - 不仅被我们删除,而且还被修改,等等。 (2认同)

and*_*vil 6

您可以通过将已编辑的文件添加回来并再次提交它们来保存已编辑的文件来解决此问题:

git add .
Run Code Online (Sandbox Code Playgroud)

要么

git add -A
Run Code Online (Sandbox Code Playgroud)

然后提交

git commit
Run Code Online (Sandbox Code Playgroud)

如果要通过删除文件来解决问题,则必须运行git rm而不是git add.

请参阅:从命令行解决合并冲突


kri*_*ris 1

我会留下这个问题 - 因为我确信有一个很好的答案 - 这就是我同时所做的:

  1. 查看git status已删除文件的列表 (1082) 和存在合并冲突的文件数 (3)
  2. 在文本编辑器中手动编辑有合并冲突的 3 个文件,然后git add对它们执行操作
  3. 创建一个文本文件,其中每行包含字母“d”,对于已删除的每个(1082)个文件(d.txt)没有任何其他内容
  4. 跑步git mergetool < d.txt

不优雅,但比按字母“d”并输入 1082 次要快