2010-07-23 42 views
16

我希望停止跟踪文件,但仍然保留在我的工作树中。git-rm --cached当他们拉动时删除另一个用户的工作树文件

我收集到了,git rm --cached FILE会让我这样做。但是,如果别人拉这个改变,他们的本地副本会被删除?

+0

结合将它们添加到.gitignore,我希望! – Cascabel 2010-07-23 14:49:31

+0

是的。这让我想知道如果将它们添加到gitignore并且不要git rm他们会发生什么...... – rod 2010-07-23 14:59:06

+0

这肯定是在其他问题中讨论过的;会发生什么......没什么。 – 2010-07-23 15:03:45

回答

8

是的,他们的副本将被自动删除。想象一下,如果这种删除不会发生 - 那么所有用户的工作副本将被成堆的删除文件污染,而这些文件不再需要了。

但是,如果远程用户对这些文件进行了本地更改,它们将不会被删除,因为pull将导致合并冲突。

由于Jefromi表明在他的评论,而这些文件是在其他用户的侧面取出,他们可以很容易地恢复 - 当当版本控制之下,是不是? ;-)文件可以通过git checkout <revision> -- <files...>得到。作为改版你可以指定以前的ID提交,用于拉它保存在ORIG_HEAD(见this question了解详细信息):

git checkout ORIG_HEAD -- removed_file 
+1

如果拉不冲突,但他们想要回文件,他们所要做的就是'git checkout HEAD^'。 – Cascabel 2010-07-23 14:50:21

+0

谢谢,这就是我需要知道的。 手指交叉我没有删除我的同事的工作目录上的任何重要的xcode文件。 – rod 2010-07-23 15:03:08

1

在这种情况下,我宁愿无视他们本地只:

如果他们已经追踪:

git update-index --skip-worktree FILE 

如果他们未追踪:将它们添加到您的本地排除文件

echo "FILE" >> .git/info/exclude 

如果您的所有回购(例如您的回购协议)都有,您也可以拥有全球.gitignore。 *〜)