我希望停止追踪文件,但仍然保留它们在我的工作目录中。
我了解到使用git rm --cached FILE
可以做到这一点。但是,如果其他人拉取此更改,他们的本地副本会被删除吗?
是的,它们的副本将会被自动删除。想象一下,如果这个删除不会发生——那么所有用户的工作副本都会被无用的删除文件污染。
但是,如果远程用户对这些文件进行了本地更改,它们就不会被删除,因为pull
将导致合并冲突。
正如Jefromi在评论中建议的那样,虽然文件在其他用户的端上被删除了,但它们可以很容易地恢复——它们处于版本控制之下,不是吗?;-) 文件可以通过 git checkout <revision> -- <files...>
来获取。作为修订版,您可以指定以前提交的ID,对于pull,它保存在ORIG_HEAD
中(有关详细信息,请参见this question):
git checkout ORIG_HEAD -- removed_file
git checkout HEAD^ <path>
。 - Cascabelgit update-index --skip-worktree FILE
echo "FILE" >> .git/info/exclude
如果你想在所有的代码库中忽略某些文件(例如 *~),你可以创建一个全局 .gitignore 文件。