Xiè*_*léi 13 git file-recovery
我只是跑git push -f错了,因此覆盖了一个远程分支。
原来的:
(remote origin:)
branch master -> commit aaaaaaa
branch foo -> commit bbbbbbb
(local)
branch master -> commit ccccccc
branch foo -> commit ddddddd
Run Code Online (Sandbox Code Playgroud)
之后git push -f:
(remote origin:)
branch master -> commit ccccccc
branch foo -> commit ddddddd
Run Code Online (Sandbox Code Playgroud)
在我的本地存储库中,我正在处理master分支,因此我可以将分支恢复master到 commit aaaaaaa,因为我可以aaaaaaa从git reflog. 但是,我无法提交,bbbbbbb因为我之前没有拉过git push -f.
我git reflog在远程存储库中尝试过,但是在裸存储库中的 reflog 中没有任何用处。
如何将分支foo恢复到bbbbbbb远程存储库中的提交?
(PS我不知道的实际价值bbbbbbb。)
use*_*686 12
尝试这个:
通过 SSH 连接到远程。
tar cvzf project-backup.tgz /path/to/project.git
Run Code Online (Sandbox Code Playgroud)如果您至少知道 的前几个字符bbbbbbb,请使用git show bbbbbb和/或git log bbbbbb找出完整的提交哈希。(如果您只需要散列,git rev-parse bbbbbb也可以使用,但最好检查一下。)
如果你不知道该值在所有的运行git fsck,你应该得到“晃来晃去提交”名单。使用git show <hash>和检查每个提交,git log <hash>直到找到正确的提交。
更新分支引用:
echo aaaaaaaaaaaaaaa.... > refs/heads/master
echo bbbbbbbbbbbbbbb.... > refs/heads/foo
Run Code Online (Sandbox Code Playgroud)使用git log master和git log foo确保您恢复了正确的分支。
| 归档时间: |
|
| 查看次数: |
4795 次 |
| 最近记录: |