取消跟踪git存储库中的文件时,请使用git rm -r --cached .
。这不会删除本地存储中曾经跟踪的文件,但是当其他开发人员使用git pull
获取此提交时,永远跟踪的文件将在其计算机存储中被删除。
您可以使用以下方式重现它:
git add .
git stash save "work position"
echo hello>>file_not_to_track
git add .
git commit -m "add file file_not_to_track"
git pull
立即显示文件
ls
file_not_to_track README.md
echo file_not_to_track >> .gitignore
git rm -r --cached .
git add .
git commit -m "untrack file_not_to_track"
git push
立即显示文件
ls
file_not_to_track README.md
git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From example.com:my/example_project
6525df1..f413f8b master -> origin/master
Updating 6525df1..f413f8b
Fast-forward
.gitignore | 1 +
file_not_to_track | 1 -
2 files changed, 1 insertion(+), 1 deletion(-)
create mode 100644 .gitignore
delete mode 100644 file_not_to_track
立即显示文件
ls
README.md
它显示git rm -r --cached .
删除其他存储库中曾经跟踪的文件,但不删除当前存储库中的文件。
答案 0 :(得分:3)
git rm --cached
跟踪从git删除文件的更改,但不删除本地副本。在本地运行ls
仍会显示本地文件,但是如果从另一台计算机上拉出,则将应用删除该文件的更改,然后删除该文件。
答案 1 :(得分:3)
在计算机A上:
git rm -r --cached .
以上命令将从索引( README.md和file_not_to_track )中删除文件。目前,索引为空。但是,文件系统上仍存在file_not_to_track。
-已缓存:使用此选项取消登台并仅从索引中删除路径。工作树文件,无论是否修改,都将被保留。
git add .
使用 add 操作,git仅添加了 README 文件。 (file_not_to_track已被忽略)。
在计算机B上:
更改了2个文件,插入了1个(+),删除了1个(-)
通过 pull 操作,git识别到 file_not_to_track 已经消失。 Git执行一个灵巧的动作。
答案 2 :(得分:3)
这是选项-cached 的工作方式,它从git索引中删除文件。工作树文件将被保留。但是,Git将不再在您的本地存储库中跟踪此文件。
在此处查找--cached选项: