Git错误:合并时“拒绝丢失未跟踪的文件”

时间:2017-06-18 18:57:47

标签: git

我在一个文件夹上有一些我不希望git跟踪的文件,所以我将它们添加到.gitignore,如下所示:

Directory/Build/

但是当我使用git status时,它们仍然显示为“未提交修改的文件”。我查了一下,建议使用:

清理git索引
git rm --r --cached Directory/Build/

我这样做了,在git status我想要未跟踪的所有文件显示为Deleted: file之后,我认为这很好,因为它们将从工作树中删除(但不是我觉得在当地?)。

但是当我试图做git pull时,我得到了一些我不知道如何解决的奇怪的合并冲突:

error: refusing to lose untracked file at 'Directory/Build/..../file.class'
error: refusing to lose untracked file at 'Directory/Build/..../file.jar'

还有一些

CONFLICT (modify/delete): ...
CONFLICT (modify/delete):  Directory/Build/..../file.jar deleted in HEAD and modified in <<id>>. Version <<id>> of Directory/Build/..../file.jar left in tree.

我尝试git merge -Xours,但它仍然给了我冲突。

如何解决?

2 个答案:

答案 0 :(得分:2)

rm --cached -r之后,您仍然需要:

  • 提交删除
  • 将构建文件夹移开(在git repo之外):git status必须显示一个干净的工作树,以便运行下一个命令,
  • git pull --rebase(重播上游分支上的本地提交)
  • 将Build文件夹移回

答案 1 :(得分:0)

如果您已将一些文件添加到Git,那么如果您将它们写入您的gitignore,它们也会被跟踪。所以你必须先删除它们。用:

git rm --cached files

然后文件将在您的存储库中删除,但它们将保留在本地。然后你可以把它写到gitignore,它们将被忽略。

如果您运行评论,则文件首先显示为已删除,因为您已完成此操作。所以添加添加并提交已更改的。然后它应该工作。之后,您不应该在目录中获得一些新的未跟踪文件。