写完代码
在 git 上边进行了 add 操作
没有 commit
然后 pull 了一下
接着撤销 使用的是 git reset --hard 进行撤销
现在求恢复,我已经 reflog 查看了操作日志 然后回退了一下,发现回不去了........
请问大神还有没有办法救回来..
需要您的回答,感谢您的回答!!!!
1
tongz OP 补一句,
git status 之后 现在 On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working tree clean 说我没有任何需要去提交的修改..... |
2
Lpl 2017-10-08 01:56:21 +08:00 via iPhone
除非你的 IDE 有 history,不然没有办法恢复了
|
4
SoloCompany 2017-10-08 03:44:04 +08:00
如果你还没有执行过 gc
并且还能记得文件的某部分内容的话,也许还能有救(因为已经 add 过,所以文件已经进入过 index 也就是说存在于 git database 的) 参考 https://stackoverflow.com/questions/7088855/git-get-all-blobs-with-pattern/37199329#37199329 参考命令 ``` git grep ’ text' $(git fsck --unreachable | grep '^unreachable blob' | cut -d' ' -f3) ``` 如果 gc 过就肯定没救了 |
5
msg7086 2017-10-08 03:56:10 +08:00
@SoloCompany 没记错的话 gc 只会清除多少天以上的辣鸡吧。
|
7
shingle 2017-10-08 10:33:01 +08:00 via Android
ctrl+z
|
8
acr0ss 2017-10-08 10:44:33 +08:00
https://www.atlassian.com/git/tutorials/resetting-checking-out-and-reverting
revert vs reset vs checkout |
9
gam2046 2017-10-08 10:47:58 +08:00
尝试恢复到最近的一条 commit 行不行
git log 查看一下你要恢复的那条 commit 的 id git rebase -i 你要恢复的 commit id 的下一条 id 在文本编辑器里,把需要抛弃的操作标记为 drop 但是看你描述,并没有 commit,那么是不是可以直接 checkout 最近的一条 commit,add 后没有 commit 的文件应该是不会收到影响?(大雾) |
10
lilydjwg 2017-10-08 12:01:07 +08:00
很麻烦,因为没有目录信息。add 过的文件被 gc 之前自然是还在的,然而要识别是哪个不容易。可以 find .git/objects -type -f -mtime -30 这样子按 mtime 搜索一下,然后和 dangling objects 取交集,再排查。
|