我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
当前回答
我想撤销我们共享存储库中最新的五个承诺。 我查了我想回溯到的订正代号 。 然后我输入了下面的内容 。
prompt> git reset --hard 5a7404742c85
HEAD is now at 5a74047 Added one more page to catalogue
prompt> git push origin master --force
Total 0 (delta 0), reused 0 (delta 0)
remote: bb/acl: neoneye is allowed. accepted payload.
To git@bitbucket.org:thecompany/prometheus.git
+ 09a6480...5a74047 master -> master (forced update)
prompt>
其他回答
为了消除(所有变化)最后承诺、最后2承诺和最后n承诺:
git reset --hard HEAD~1
git reset --hard HEAD~2
...
git reset --hard HEAD~n
在做出具体承诺后,要消除任何东西:
git reset --hard <commit sha>
例如,
git reset --hard 0d12345
谨慎使用硬选项 : 它会同时删除您回购的本地更改, 并返回到上一个提及的承诺 。 您只应该运行此选项, 前提是您确定您在最后一次承诺中搞砸了, 并且想要回到过去 。
作为副注释,大约7个承诺的散列字母就足够了,但在更大的项目中,你可能需要最多12个字母才能独有。如果您愿意,也可以使用整个承诺的 SHA 。
上述命令在GitHub也为Windows服务。
只需撤销最后一项承诺 :
git reset --soft HEAD~
或撤销上次承诺前的时间 :
git reset --soft HEAD~2
或撤销先前的任何承诺 :
git reset --soft <commitID>
(您可以通过 git reflog 获得对帐号)
当您撤销上一个任务时, 记住要用
git clean
更多信息,请查看文件:git-resets。
您可以使用 git 返回 < tomit- id> 。
为了得到身份证明,请使用git日志。
使用此命令 :
git checkout -b old-state number_commit
假设您在本地犯下错误, 并将其推到远程仓库。 您可以解开这两个命令的混乱 :
首先,我们需要纠正我们的地方储存库,回到我们所希望的承诺上来:
git reset --hard <previous good commit id where you want the local repository to go>
现在,我们通过使用此命令,在远程仓库大力推动这项良好承诺:
git push --force-with-lease
强制选项的“ 租赁” 版本将防止意外删除您不知道的新承诺( 即上次拉动后来自其它来源 ) 。