0%

git版本回退

对于git版本的回退,我们一般会用到如下两个命令:

  • git reset
  • git revert

这两个命令有什么区别呢?

1、git reset

假设有如下几个提交:

执行如下命令

1
git reset --hard a0fvf8

命令执行之后,HEAD指针就会移动到B提交下

此时,远程仓库的指针依然在D提交上。直接push的话,无法将更改推送到远程仓库,只能使用-f强推到远程仓库:

1
git push -f

这个方法的弊端显而易见,之前的C、D提交将会被抹除,无法再找回了。

2、git revert

通过反做创建一个新的版本,新版本的内容与要回退的目标版本一样,而HEAD指针指向新生成的版本。

用git revert 来实现上述例子的话可以先revert D,再revert C(由新到旧依次revert)

1
2
git revert 5lk4er
git revert 76sdeb

如果回退的数量较大,一个个回退容易出错,可以使用以下方法进行批量回退

1
git revert OLDER_COMMIT^..NEWER_COMMIT

这样操作的话HEAD指针是往后移动的,可以直接push到远程仓库中。将来甩锅便有迹可循

-------------本文结束感谢您的阅读-------------