git checkout如何知道是删除文件还是不管它?

时间:2013-10-12 01:07:30

标签: git

我有一些我不想跟踪的“设置”(例如,Eclipse * .prefs文件)的文件。它们已被跟踪(因为我没有正确设置),但git rm --cached看起来像是如何阻止文件被跟踪。我试过这个,现在git status将文件列为deleted:,但它们仍然在我的目录中。到现在为止还挺好。

假设我在当前状态下使用git commit;它将创建一个新的提交C1但不会跟踪这些文件。假设一段时间后,经过几次提交,并假设我对我的设置文件进行了一些更改,我使用git checkout恢复到提交C1。这会删除不再跟踪的设置文件,还是只留下它们?我担心Git如何知道差异,在检查早期提交时,“此文件不在提交中,因此我将删除它”,并且“此文件应该保持独立”。 Git报告文件为deleted:这一事实让我更加关注,我想,尽管可能这只是不准确的输出。

1 个答案:

答案 0 :(得分:2)

Git在执行签出之前会进行检查,以查看目录中是否有任何未跟踪的文件,但是哪些文件存在于即将签出的提交中。如果有任何它告诉你它不能进行结账,因为文件将被覆盖。您可以移动/重命名它们并重试,或者使用--force选项再次尝试,该选项将强制覆盖需要覆盖的任何内容。