说我在Git存储库中.我删除了一个文件并提交了更改.我继续工作,并做了一些更多的提交.然后,我发现我需要恢复该文件.
我知道我可以使用签出文件git checkout HEAD^ foo.bar,但我真的不知道该文件何时被删除.
我希望我不必手动浏览我的日志,检查整个项目的给定SHA,然后手动将该文件复制到我原来的项目结帐中.
曾几何时,我的项目中有一个文件,我现在希望能够获得.
问题是:我不知道何时删除它以及它在哪条路径上.
如何存在此文件的提交?
我有一个带有n次提交的Git存储库.
我有一个我需要的文件,以前曾经在存储库中,我突然寻找并想"哦!那个文件去哪了?"
是否有(系列)Git命令会告诉我"在提交n-13时删除了文件really_needed.txt"?
换句话说,如果不查看每个单独的提交,并且知道我的Git repo对每个文件进行了每次更改,我是否可以快速找到该文件的最后一次提交,以便我可以将其恢复?
我经常使用以下命令列出两次提交之间更改的文件:
git diff --name-only SHA1 SHA2
Run Code Online (Sandbox Code Playgroud)
它给出了一个像这样的文件列表:
/src/example/file1 /src/example/file2 /src/example/file3
这有多么有用几乎没有尽头.
我真的希望能够在每个文件旁边显示对更改状态的简要参考,指示文件是否已添加,修改或删除.
这是一个展示这个概念的例子:
git diff --name-only --and-how-me-the-change-status SHA1 SHA2
Run Code Online (Sandbox Code Playgroud)
A /src/example/file1 M /src/example/file2 D /src/example/file3
更改状态(A,M,D)仅作为示例显示,我不介意这是什么,只要它是明确的.
我知道我可以使用该--diff-filter选项仅列出添加的文件,或仅列出已修改的文件或仅列出已删除的文件.使用此选项意味着我必须运行三个命令才能获得三个文件名列表.这很好,但可能会更好.
是否有一个命令我可以运行给我上面的示例输出?