git merge“被我们删除”

时间:2015-06-10 02:22:17

标签: git merge

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

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

5 个答案:

答案 0 :(得分:13)

以下是部分解决方案:

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

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

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

答案 1 :(得分:8)

一行修复:

git diff --name-only --diff-filter=U | xargs git rm

答案 2 :(得分:6)

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

InitializeComponent();

PopulateTreeView();

this.treeView1.NodeMouseClick +=
    new TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick);

OpenFileDialog ofd1 = new OpenFileDialog();

private void button3_Click(object sender, EventArgs e)
{
    if (ofd1.ShowDialog() == DialogResult.OK)
    { }
}

然后提交

git add .

如果您想通过删除文件来解决问题,则必须运行git add -A 而不是git commit

请参阅:Resolving a merge conflict from the command line

答案 3 :(得分:0)

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

  1. 执行git status查看已删除文件的列表(1082)和已合并冲突的数字(3)
  2. 在文本编辑器中手动编辑出现合并冲突的3个文件,然后对其进行git add
  3. 创建一个文本文件,其中一行带有字母" d"对于每个已删除的(1082)文件(d.txt)
  4. ,每行都没有其他内容
  5. 运行git mergetool < d.txt
  6. 不优雅,但比按字母快#34; d&#34;并输入1082次

答案 4 :(得分:0)

我也观察到

  

abc.txt:需要合并

尝试时

git rm abc.txt

在挑选后看到文件处于“我们删除”状态。

我通过执行以下操作最终解决了删除问题:

git add abc.txt
rm abc.txt
git add abc.txt

这会将abc.txt添加到暂存区域(本质上是重新创建“我们删除的”文件。(它可以解决冲突状态)

然后从文件系统中删除文件

然后将说明文件已消失的事实添加到说明区域。

可能有一些shell技巧可以在您的1000多个文件集上运行这3个命令,而不会引起很多麻烦。

可能有更好的方法来处理此问题,但是由于git rm abc.txt不能像我们预期的那样工作,所以我想我会共享一组似乎不使用< strong>合并工具。