我的项目有一个文件foo
,我一直在使用它并使用git
进行检查。我只是做了一些重构,所以我不再需要该文件。如果我做git rm foo
,该文件是否仍然存在于较旧的提交中?我能否检出一个较旧的提交并使用该文件?git rm是否删除文件的所有历史记录?
14
A
回答
19
不,git rm
(加上提交)写入反映文件不再存在的新树。该文件的整个历史记录,包括创建,修改和最终删除都存在于历史记录中。
6
否,git rm
将只从工作目录中删除文件并将该删除添加到索引中。所以只有未来的提交会受到影响。以前的所有提交保持不变,当您从存储库中删除文件时,历史记录将实际显示。
一般来说,您之前提交的所有提交都是永久性的,所以您应该永远不用担心在提交历史记录时丢失提交。当然,有些事情可以删除或更改以前的提交(如rebasing),但对于大多数事情,您都很安全。
5
您将能够使用已知提交ID来检出任何旧版本,其中包含所有状态都属于它,包括现在被删除的文件。见例如git分支<branchname> <起点>其中起点是提交ID。你甚至不应该追踪属于当前分支的那个起点;提交ID应该是唯一的,因此它可以位于当前存储库已知的任何分支中。
您可以使用log命令检查文件的历史记录;但它不适用于任何语法 - 对于1.7.7,我将发布“git log-oldpath”而不是简单的“git log oldpath”,否则它将无法区分路径和修订版本。对于其他一些“责备”的命令,即使这还不够 - 应该检查旧版本以启动它。
相关问题
- 1. 从Git历史记录中删除具有历史记录的特定文件
- 2. 在git中恢复已删除的历史记录文件
- 3. 从git历史记录中删除文件的某些内容
- 4. Git:从历史记录中删除替换文件的提交
- 5. Git从历史记录中删除大文件
- 6. Git/Bitbucket - 从整个历史记录中删除文件/提交
- 7. 在git中删除分支是否将其从历史记录中删除?
- 8. 如何删除已删除的git子树文件夹的历史记录?
- 9. 如何为所有团队成员删除github历史记录
- 10. 如何取消删除以前在git历史记录中删除的文件?
- 11. 从git repo历史记录中删除所有已删除的文件w搜索命令
- 12. 删除文件(历史)
- 13. git - Blob/index文件历史记录
- 14. 删除所有除从混帐历史的某些文件夹
- 15. VSO git文件历史中的“简单历史记录(默认)”和“完整历史记录”有什么区别?
- 16. 如何在不删除Git历史记录的情况下从git存储库中删除文件/文件夹
- 17. 无法从Git历史记录中删除目录
- 18. git从历史记录中删除目录
- 19. 如何从历史记录中删除二进制文件?
- 20. 将所有未记录的文件删除到Git目录中?
- 21. 如何从git存储库中删除旧的历史记录?
- 22. 从git历史记录中删除未使用的资产
- 23. 在SVN中移动文件是否删除其修订历史记录?
- 24. 在Git中获取(可能已删除)文件的历史记录/日志
- 25. Git:删除历史记录中名为类似CLI选项的文件
- 26. git从分支中删除一些文件的提交历史记录
- 27. 删除浏览器历史记录
- 28. 如何删除所有文件exept 2“with git rm”?
- 29. 如何从mercurial的历史记录中删除大文件?
- 30. 在TFS中删除包含历史记录的文件
第一个字是不是应该是?他问他能否从以前的提交中获取文件?你的意思是说是!对? – PHcoDer 2016-09-02 18:25:26