回答

收藏

如何在 Git 存储库中查找和恢复已删除的文件

技术问答 技术问答 286 人阅读 | 0 人回复 | 2023-09-12

假设我在 Git 存储库。我删除了一份文件并提交了更改。我继续工作,做出了更多的承诺。然后,我发现我需要恢复这份文件。
+ e8 W$ ^; K5 \/ G! z我知道我可以用 签出文件git checkout HEAD^ foo.bar,但我真的不知道文件何时被删除。
& F* v. {, ?0 F. k5 a* _[ol]提交给定文件名的最快方法是什么?
* |5 n' }8 [3 O. e( R8 f什么是最简单的方法将文件恢复到我的工作副本中?[/ol]我希望我不必手动浏览我的日志,检查给定 SHA 整个项目,然后手动将文件复制到我原来的项目检查中。
! m8 o" ?; u0 V( M                                                               
. \) z, _; @- d% Z6 g3 E! x. [    解决方案:                                                                , x* i) q7 N7 ]3 r5 `
                                                                查找影响给定路径的最后一个提交。因为文件不在 HEAD 在提交过程中,必须删除以前的提交。+ K) S# l" P7 P) g1 c" q
git rev-list -n 1 HEAD -- ^然后用插入符号 ( )签字前提交的版本:
( d: o4 I0 @4 H! u3 Ngit checkout ^ -- 或者在命令中$file有问题的文件。# Y% s3 i5 s) n# E! S  z
git checkout $(git rev-list -n 1 HEAD -- "$file")^ -- "$file"若使用 zsh 并使用 EXTENDED_GLOB 选项,插入符号不起作用。~1改用。
( n' t9 {+ J( ^$ [9 [. t, p6 L% i, [git checkout $(git rev-list -n 1 HEAD -- "$file")~1 -- "$file"
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则