无法使用Git从跟踪中删除文件

6

我在取消跟踪文件时遇到了奇怪的问题。 我有一个已经被跟踪的文件index.css。然后我将它添加到.gitignore中。接着我运行以下命令,并得到如下输出:

$ git rm --cached build/development/css/index.css
rm 'build/development/css/index.css'

运行git status会得到以下结果:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    build/development/css/index.css

尝试提交更改时,我收到以下错误消息:
Error:On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
 during executing git commit --only -F C:\Users\dtv\AppData\Local\Temp\git-commit-msg-7154374096157077481.txt -- build/development/css/index.css

如果我试图将对index.css的更改与其他更改一起提交,提交就会顺利进行,但是文件的更改仍然被检测到。我做错了什么?

我无法在git版本1.9中重现您的问题。您使用的是哪个版本? - Sascha Wolf
@Zeeker,1.9.4版本出现了问题,但我无法找出原因。有什么方法可以追踪并解决它吗? - Max Koretskyi
不一定,但可能是您的存储库出了问题。您可以尝试重新克隆存储库并重试。 - Sascha Wolf
刚刚又克隆了一遍代码库,还是一样的问题。 - Max Koretskyi
3个回答

1
问题出在 git commit--only 选项上。从 git-commit 手册中可以看到:

仅从命令行指定的路径提交更改,不考虑之前已经添加到暂存区的内容。

这个选项试图提交指定的文件,而不管之前执行的 git rm --cached 命令。


1
根据我的观察,如果我们使用git rm --cached 文件名命令,它只在那个时候忽略该文件。如果您将该文件添加到.gitignore中,则git会永久忽略(取消跟踪)该文件。在将文件名或路径添加到.gitignore后,我们必须执行以下命令,以便从下一次开始取消跟踪这些文件。首先提交任何未完成的代码更改,然后运行以下命令:git rm -r --cached . -> 这将从索引(暂存区)中删除所有更改的文件;git add .git commit -m“.gitignore现在正在工作” -> 提交更改。

1

你尝试过了吗:

git update-index --assume-unchanged path_to_file

这将在索引中标记文件,并且git将停止跟踪文件的任何修改。结合在.gitignore中添加此文件,使用时它将停止显示为已修改

git status

你也可以查看update-index的文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接