2017-06-01 106 views
0

我犯了我的项目。 但是,要删除该提交,但保留该代码以下一个提交。 我用这个代码:恢复提交是强制删除Github

// now commit is A 

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

git commit -m "My commit" ` 

git push -f origin master 

我想恢复提交A. 我能做到吗?如何 ?

非常感谢。

+0

什么**确实**你的意思是“恢复提交A”?请详细解释你想要完成的事情。 –

+0

你的意思是恢复提交? – LethalProgrammer

回答

0

如果这是最近做的,你仍然有你跑上面的命令在本地回购,则引用日志可能仍有引用提交A

$ git reflog 
dd3f691 [email protected]{0}: commit: My Commit 
9c74193 [email protected]{1}: reset: moving to 9c74193 
aaaaaaa [email protected]{2}: commit: A 

$ git checkout [email protected]{2} 

如果你一直在走动了很多HEAD指针,你也可以查看具体的分支引用日志

$ git reflog master 
dd3f691 [email protected]{0}: commit: My Commit 
9c74193 [email protected]{1}: reset: moving to 9c74193 
aaaaaaa [email protected]{2}: commit: A 

$ git checkout [email protected]{2} 

一旦你签A你会在分离的头的状态。如果您确定这是您想要的,您可以强制将现有分支移至此处。 (例如,如果先前的强制推送给其他开发者带来了问题,并且您试图按照以前的方式解决问题,那么可以使用git branch -f master。)或者您可以在此处创建新的分支或标记,或其他任何内容。

当然,这可能需要另一次推动力(例如,如果你确实将master移回)。

+0

谢谢! 我恢复了我的代码。 但我看到“9c74193 HEAD @ {25}”,有什么区别 ? –

+0

不完全确定你在这里问什么......也许这将澄清:输出'9c74193 HEAD @ {25}'意味着'HEAD'已经移动了25次,因为它在缩写ID为9c74193的提交中“ 。在我的示例中,我必须使用占位符,当然,因为我不知道任何实际提交的ID(除了您在'reset'命令中提到的那个ID) –