将远端分支代码回退到某个commit

131 阅读2分钟

今天记录一个不常用的 git 命令:

git push origin +commit的哈希值:分支名
举个例子:
git push origin +1234567890abcdef:main

这个命令是干什么用呢?

当我们提交了若干个commit后,我们发现我们的提交是有错误的,然后我们不想要这几个commit了。此时我们可以通过提交新的commit然后恢复之前的代码。但是,此时会commit记录中还是会出现之前的记录。如果我们想删除掉这几个记录,我们该怎么办呢,这个时间上面👆🏻的命令就出现了。

没错,上面的命令就可以删除掉记录,然后让我们的commit记录中不再出现多余的记录。请看下面的。例子 image.png 我们要删除两个错误的提交,commit1和commit2。

我们要恢复到 b922175ec0df603cbe6970e8ddfb632831b0f273 这个commit,分支名称为 main,执行上面的命令

git push origin +b922175ec0df603cbe6970e8ddfb632831b0f273:main

看到下面的情况就表示成功了

image.png

这个时候去github上查看commit记录的如下:

image.png

此时远端已经没有commit1和commit2了。

但是我们本地还是有这两个commit的,如果你此时执行 git push 还是会直接把两个commit push到远端。当然了,这不是我们想要的,此时我们执行下面的命令,让本地代码也回到之前的版本

git reset --hard b922175ec0df603cbe6970e8ddfb632831b0f273

结果如下图所示: image.png

截至目前,我们的代码已经回退了,同时也删除了commit1和commit2。

操作警告

删除记录的操作尽量还是少做,避免误删代码。