5

我使用 .git/info/exclude 取消了一些文件夹和文件的跟踪:

doc
*.txt
doc/*.txt
doc/somefile.txt

但是 git status 说它仍然被跟踪:

$ git st
# On branch dev
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   doc/somefile.txt

其他奇怪的事情是ls-files表明它是未跟踪的:

$ git ls-files --ignored --exclude-from=.git/info/exclude
doc/somefile.txt
$ touch /tmp/xxx
$ git ls-files --ignored --exclude-from=/tmp/xxx
$

我在 git 版本 1.8.1.5

所以我得出结论,我可能会误解某事或做错事。请问有什么想法吗?

4

3 回答 3

6

由于您在本地忽略存储库中的文件,因此您需要告诉 git 您正在忽略它们

git update-index --assume-unchanged <files to forget>
于 2013-08-16T11:19:57.110 回答
3

你需要git rm --cached <file>。这不会从您的工作目录中删除该文件,但它会将其从 中删除,git cache因此它现在将包含在 . gitignore.

于 2013-08-16T11:23:58.100 回答
0

由于当前正在跟踪文件,因此您需要git在忽略它们之前告诉它们忘记它们。

git rm --cached doc/somefile.txt

于 2013-08-16T11:17:56.097 回答