我的项目有一个名为foo
的文件,我一直在使用并通过git
提交。最近我进行了一些重构,所以我不再需要这个文件了。如果我执行git rm foo
,旧的提交中文件还会存在吗?我能够检出旧的提交并使用这个文件吗?
不,git rm
(加上提交)会写入一个新的树形结构,反映出该文件已不存在。该文件的整个历史记录,包括创建、修改和最终删除,都存在于历史记录中。
git rm
只会从工作目录中删除文件并将该删除添加到索引中。所以只影响未来的提交。所有以前的提交都保持不变,历史记录实际上会显示您从存储库中删除文件的时间。您可以使用已知的提交ID检出任何旧版本,其中包括现在已删除的文件的所有状态。例如,使用git branch <branchname> <start-point>命令,其中start-point是一个提交ID。您甚至不需要跟踪start-point属于当前分支;提交ID应该是唯一的,因此它可以在当前存储库中已知的任何分支中。
您可以使用日志命令检查文件的先前历史记录;但它并不适用于任何语法 - 对于1.7.7,我应该发出“git log -- oldpath”而不是简单的“git log oldpath”,因为否则它无法区分路径和修订版。对于一些其他命令,如“blame”,即使这样还不够 - 您需要检出旧版本才能启动它。
git rm --cached
是关于什么的? - Zach Smith