如何从分支历史记录中删除提交?我应该使用git reset-hard HEAD吗?


当前回答

当我提交并推送时,我通常会做什么(如果有人推送他的提交,这可以解决问题):

git reset --hard HEAD~1

git push -f origin

希望这有帮助

其他回答

git reset --hard commitId

git push <origin> <branch> --force

PS:CommitId指的是要还原回的那个

如果您没有发布更改,为了删除最新提交,您可以

$ git reset --hard HEAD^

(注意,这也会删除所有未提交的更改;请小心使用)。

如果您已经发布要删除的提交,请使用git-restore

$ git revert HEAD

假设我们要从回购中删除提交2和4。(数字越高,提交越新;0是最早的提交,4是最新的提交)

commit 0 : b3d92c5
commit 1 : 2c6a45b
commit 2 : <any_hash>
commit 3 : 77b9b82
commit 4 : <any_hash>

注意:您需要对回购拥有管理权限,因为您使用的是--hard和-f。

gitcheckout b3d92c5签出最后一个可用的提交。gitcheckout-b repair创建一个新的分支来处理。git cherry pick 77b9b82运行提交3。git cherry pick 2c6a45b运行提交1。git checkout master checkout master。git reset--hard b3d92c5将主机重置为上次可用提交。gitmerge修复将我们的新分支合并到master上。git push-f origin master将master推送到远程存储库。

假设您尚未推送到远程存储库,则可以重新克隆存储库。这是我几次选择的方法。

git reset—软Id提交允许您删除提交,但不删除当前文件。然后使用git push-f源名称分支