我好像在跟踪一个文件后,又将其忽略,然后删除了它,导致我的git库出了问题。问题是,我想让该文件存在于远程存储库(即现场网站)中,但只是不想将其跟踪。
现在我的主分支试图从存储库中删除所有文件,我知道这将在推送更改时在远程分支上删除它们...我只想取消跟踪它们,但由于它们已经在主分支上被删除,因此无法这样做,而且"git rm -r --cached"会返回"did not match any files"的错误信息。
如何在不从远程存储库中删除这些文件的情况下取消跟踪它们?
我好像在跟踪一个文件后,又将其忽略,然后删除了它,导致我的git库出了问题。问题是,我想让该文件存在于远程存储库(即现场网站)中,但只是不想将其跟踪。
现在我的主分支试图从存储库中删除所有文件,我知道这将在推送更改时在远程分支上删除它们...我只想取消跟踪它们,但由于它们已经在主分支上被删除,因此无法这样做,而且"git rm -r --cached"会返回"did not match any files"的错误信息。
如何在不从远程存储库中删除这些文件的情况下取消跟踪它们?
您只是不想跟踪一个文件,但想要将文件保留在远程仓库(非裸仓库)中。
使用以下git命令。执行此操作后,git将停止检查该文件是否有可能被修改。
git update-index --assume-unchanged <filename>
您可以通过设置--no-assume-unchaged标记来重新跟踪任何时刻的更改。
git update-index --no-assume-unchanged <filename>
这些命令不会影响远程代码库。
欲了解更多信息,请参考:http://kar-git.blogspot.in/2012/11/how-to-set-git-to-ignore-few-files-like.html
git rm
用于从仓库中删除文件。
要停止跟踪它们,您可以在删除后将它们添加到仓库根目录下的.gitignore
文件中。
rm
命令删除文件不会停止跟踪它们,而使用 git rm
命令则会停止跟踪。 - heinrich5991git pull origin master // foo will be removed
git checkout abcd1234 -- foo // checkout foo from commit abcd1234 (foo is staged)
git reset HEAD // unstage foo
git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# foo
然后将其添加到.gitignore以取消跟踪