问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

一文看懂git reset与git revert

创作时间:
作者:
@小白创作中心

一文看懂git reset与git revert

引用
CSDN
1.
https://m.blog.csdn.net/qq_44704740/article/details/145530854

Git是现代软件开发中不可或缺的版本控制系统,而git resetgit revert是两个常用的回滚代码的命令。虽然它们都能实现代码回滚的功能,但它们的工作原理和使用场景却大不相同。本文将通过一系列步骤来研究这两个命令,并分析它们之间的区别。

所有操作均在main分支进行。

步骤一:初始化提交

首先,我们创建一个简单的Git仓库,并进行三次提交:

  1. 初始化Git仓库
  2. 提交A
  3. 提交B
  4. 提交C

得到的结果如下:

步骤二:使用git reset

我们将提交回滚到A:

git reset 306e695 --hard

关于--hard参数的讨论放在文后。

执行上述命令后,得到的结果如下:

此时代码已经回滚到A,并且删除了B和C两个提交记录。

步骤三:撤销回滚

为了演示revert命令,我们需要将代码重新回滚到C:

git reset 95fdfd5 --hard

执行上述命令后,得到的结果如下:

此时最新提交回到了C。

步骤四:使用git revert

我们将代码回滚到A:

git revert 306e695

冲突产生了!!!

解决冲突后产生新的提交D

得到的结果如下:

此时最新提交走到了D,代码回滚到了A。

结论

  1. git reset命令通常用于撤销上一次提交,回退到之前的版本,该命令会改变Git的历史记录。
  2. git revert命令会产生新的提交,并保留之前的提交历史记录。
  3. git reset通常在本地提交还未推送到远端仓库时使用,不产生新的提交,但会永久删除提交,有破坏性更新。
  4. git revert通常用于回滚包含远端仓库的提交,保留了历史提交记录,方便定位问题,比较安全。

补充说明

  1. --soft:仅重置HEAD,保留所有文件更改在暂存区。
  2. --mixed:默认,重置HEAD和暂存区,保留文件更改在工作目录。
  3. --hard:重置HEAD、暂存区和工作目录,完全丢弃本地更改。
  4. 撤销git revert commitID的方法:git revert --abort

通过上述步骤和分析,我们可以清晰地看到git resetgit revert之间的区别。在实际开发中,选择合适的命令可以避免不必要的麻烦,确保代码库的整洁和安全。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号