我承诺了我的项目。 但是我想要删除该提交但是将该代码保留到下一次提交。 我用了这段代码:
// now commit is A
git reset --soft 9c74193
// 9c74193 is old commit
git commit -m "My commit" `
git push -f origin master
我想恢复提交A. 我可以做吗 ?如何 ?
非常感谢你。
答案 0 :(得分:1)
如果这是最近完成的,并且您仍然拥有运行上述命令的本地存储库,则reflog可能仍然具有提交A
的引用。
$ git reflog
dd3f691 HEAD@{0}: commit: My Commit
9c74193 HEAD@{1}: reset: moving to 9c74193
aaaaaaa HEAD@{2}: commit: A
$ git checkout HEAD@{2}
如果你一直在移动HEAD
指针,你也可以检查一个特定于分支的reflog
$ git reflog master
dd3f691 master@{0}: commit: My Commit
9c74193 master@{1}: reset: moving to 9c74193
aaaaaaa master@{2}: commit: A
$ git checkout master@{2}
结帐A
后,您将处于独立头状态。如果您确定自己想要的是什么,可以将现有分支强制移动到此处。 (例如,如果早期的force-push为其他开发人员创建了问题,并且您尝试按照以前的方式修复它,则可以git branch -f master
。或者您可以在此处创建新的分支或标记或者其他什么。
当然,这可能需要另一次推力(例如,如果你确实将master
移回了它的位置。)