我在一个文件夹上有一些我不希望git跟踪的文件,所以我将它们添加到.gitignore
,如下所示:
Directory/Build/
但是当我使用git status
时,它们仍然显示为“未提交修改的文件”。我查了一下,建议使用:
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
,但它仍然给了我冲突。
如何解决?
答案 0 :(得分:2)
在rm --cached -r
之后,您仍然需要:
git status
必须显示一个干净的工作树,以便运行下一个命令,git pull --rebase
(重播上游分支上的本地提交)答案 1 :(得分:0)
如果您已将一些文件添加到Git,那么如果您将它们写入您的gitignore,它们也会被跟踪。所以你必须先删除它们。用:
git rm --cached files
然后文件将在您的存储库中删除,但它们将保留在本地。然后你可以把它写到gitignore,它们将被忽略。
如果您运行评论,则文件首先显示为已删除,因为您已完成此操作。所以添加添加并提交已更改的。然后它应该工作。之后,您不应该在目录中获得一些新的未跟踪文件。