恢复提交是强制删除Github

时间:2017-06-01 14:08:18

标签: git github

我承诺了我的项目。 但是我想要删除该提交但是将该代码保留到下一次提交。 我用了这段代码:

 // now commit is A

 git reset --soft 9c74193 
 // 9c74193   is old commit

 git commit -m "My commit" `

 git push -f  origin master

我想恢复提交A. 我可以做吗 ?如何 ?

  

非常感谢你。

1 个答案:

答案 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移回了它的位置。)