git回退到指定的版本

我的开发分支合并了 develop ,发现代码有问题,现在需要回滚到合并之前的版本。

使用 git log 查看下最近的提交,如果有如下的提交

G1 - G2 - G3 - B1 - B2 - B3
G1 - G2 - G3 - B1 - B2 - B3
           \    \    \    \-- HEAD
            \    \    \------ HEAD~1
             \    \---------- HEAD~2
              \-------------- HEAD~3

这里分两种情况,这里要回退 B1 ~ B3

  • 没有提交到服务器

可以使用如下中的一种挨个回滚

git reset --hard B1 B2 B3
git reset --hard HEAD HEAD~1 HEAD~2

注意上面的 B1 B2 B3 都是指的提交的ID

  • 已经提交到服务器

如果代码已经提交了,最好使用 revert

git revert --no-commit B1 B2 B3
git revert --no-commit HEAD HEAD~1 HEAD~2
git revert --no-commit HEAD~2^..HEAD

这里 –no-commit 告诉 git 执行还原,但是不要自动提交

<rev1>..<rev2> 两个点 .. 表示范围

我这里的由于是要回退一个 merge过的提交,需要指定 -m 参数,可以使用 man git-revert 查看具体的使用方法。

man git-revert
git revert --no-commit -m 1 具体的提交ID

可以参考 回退一个错误的merge(http://web.mit.edu/jhawk/mnt/spo/git/www/howto/revert-a-faulty-merge.html)

标签:GIT 发布于:2019-11-11 06:44:13