Com*_*ity 3 git git-commit atlassian-sourcetree
我正在使用SourceTree,发生的事情是我点击了"Commit",然后添加了所有已更改的文件,但在提交之前我想删除其中一个文件以便稍后提交.
我右键单击了我的文件,并提供了以下选项:

我真的对这些选择感到困惑,我点击了"丢弃",现在这个文件中完成的所有工作都丢失了!
恐慌模式!如何恢复此文件中的更改?
谢谢!
如果文件已经暂存(它看起来像你的那样),那么快照将存在于Git的数据库中.我们可以把它拿回来!
Git在内部按照.git/objects/存储库中的方向存储快照.每个对象都存储在以其哈希命名的文件中,由前2个字符拆分为目录.快照将存在此处,直到它们被打包到文件中.git/objects/pack/(不会发生永远不属于提交的快照)或垃圾收集(最终将发生在您丢失的文件中).困难的部分将是弄清楚它是哪个对象.
要查找对象,请运行
ls -lRt .git/objects
Run Code Online (Sandbox Code Playgroud)
获取按上次修改时间排序的所有对象的列表.这是我的假设存储库的样子:
$ ls -lRt .git/objects
.git/objects/22:
total 4
-r--r--r-- 1 peter peter 17 Sep 1 11:18 3b7836fb19fdf64ba2d3cd6173c6a283141f78
.git/objects/f7:
total 4
-r--r--r-- 1 peter peter 17 Sep 1 11:09 0f10e4db19068f79bc43844b49f3eece45c4e8
.git/objects/54:
total 4
-r--r--r-- 1 peter peter 51 Sep 1 11:08 3b9bebdc6bd5c4b22136034a95dd097a57d3dd
.git/objects/e8:
total 4
-r--r--r-- 1 peter peter 134 Sep 1 11:08 e8417380c89509ec1e5b67c15469547a4489c2
.git/objects/e6:
total 4
-r--r--r-- 1 peter peter 15 Sep 1 11:08 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
Run Code Online (Sandbox Code Playgroud)
跑
git cat-file -p <hash>
Run Code Online (Sandbox Code Playgroud)
候选对象,直到找到你遗失的对象.请记住将目录名称中的2个字符添加到哈希中.在我的情况下,如果我对11:09的文件感兴趣
git cat-file -p f70f10
Run Code Online (Sandbox Code Playgroud)
快乐狩猎.
| 归档时间: |
|
| 查看次数: |
4158 次 |
| 最近记录: |