我想我可以通过简单的谷歌搜索找到答案,因为它看起来如此简单和常见,但我找到的每个答案都是针对一个非常特殊的情况,不适用于我.
我的存储库中有两个本地提交:
commitA - commitB(H)
(*H表示HEAD)
我想在提交A中查看我的代码的快照,所以我做了:
git reset --hard A
所以现在我有了
commitA(H) - commitB(好吧,我正在希望B仍在那里)
我只想回到让B成为我的头!
好运与你同在,只要你有没有禁用的git的"reflogs":承诺B 是仍然存在.(即使你已经拆下安全气囊和安全带,它仍然可能仍在那里.:-) Reflog条目默认保留提交至少30天.)
如果您知道提交的SHA-1 ID B:
$ git reset --hard <id of B>
Run Code Online (Sandbox Code Playgroud)
会得到它.
如果你不知道的ID B,你必须找到它,或者直接混帐找到它,但幸运的是这很容易1,因为它们是在reflogs:
$ git reflog # shows the reflog for HEAD
$ git reflog master # shows the reflog for branch master
Run Code Online (Sandbox Code Playgroud)
然后,您可以复制并粘贴ID,或使用HEAD@{1}您在reflog输出中看到的样式语法:
bf8be34 master@{0}: reset: moving to bf8be34bb970c875585952efc5c09898f98e1d10
d106870 master@{1}: commit: ...
Run Code Online (Sandbox Code Playgroud)
请注意,--hard将一如既往地破坏您在工作树中的任何未提交的工作.
1好吧,"简单",如果扫描一堆SHA-1和一行提交消息来找到合适的一个"很容易".在活动存储库中,查找隐藏的reflog条目非常棘手.如果您进行了大量的重新定位和修改,那么相同的提交消息会重复出现.幸运的是,在这种情况下,它将是...@{1}.
| 归档时间: |
|
| 查看次数: |
390 次 |
| 最近记录: |