Dav*_*der 43 git commit github
我对git的工作原理并不熟悉.我错误地提交了一个提交,并希望将其恢复.我做了一个
git reset --hard HEAD~1
Run Code Online (Sandbox Code Playgroud)
当心Google员工: 这不仅会恢复提交,还会丢弃所有文件更改!
现在项目在我的机器上还原,但不在github上.如果我尝试推送此代码,我会通过1次提交得到错误"你的分支在'origin/master'后面,并且可以快速转发." 如何从github中删除此提交?
Amp*_*mpT 44
该文章有一个极好的说明为如何去了解各种情况(如提交已经完成以及推或只是一个承诺,推前):
http://christoph.ruegg.name/blog/git-howto-revert-a-commit-already-pushed-to-a-remote-reposit.html
从文章中,我看到通过其提交ID恢复先前提交的最简单命令是:
git revert dd61ab32
Run Code Online (Sandbox Code Playgroud)
Let*_*_Be 32
您可以这样做,git push --force但请注意您正在重写历史记录,任何使用该回购的人都会遇到此问题.
如果要防止此问题,请不要使用重置,而是使用 git revert
Luk*_*uke 18
或者您可以尝试使用git revert http://www.kernel.org/pub/software/scm/git/docs/git-revert.html.我认为类似的东西git revert HEAD~1 -m 1将恢复你的最后一次提交(如果它仍然是最后一次提交).
无法对其他答案发表评论,我会提供一些额外的信息.
如果你想要revert最后一次提交,你可以使用git revert head.head指您分支中最近的提交.
你在使用head~1时使用的原因reset是你告诉Git"删除提交之后的所有更改"(reset --hard)"在head之前提交一个"(head~1).
reset是要提交,revert是上提交.
正如AmpT所指出的那样,您也可以使用提交SHA来识别它,而不是计算距离head它的距离.SHA可以在logs(git log)和其他各种方式中找到.
你也可以在Git中使用任何其他指针.例如标签或分支.并且还可以使用所有这些有趣的其他方式来引用提交https://www.kernel.org/pub/software/scm/git/docs/git-rev-parse.html#_specifying_revisions
| 归档时间: |
|
| 查看次数: |
87795 次 |
| 最近记录: |