当前位置: 代码网 > it编程>编程语言>其他编程 > Git版本回退之reset和revert使用详解

Git版本回退之reset和revert使用详解

2025年04月03日 其他编程 我要评论
git版本回退之reset和revert在开发过程中,可能会遇到过错误提交的情况。这种情况下,先不要着急,可以通过以下两个命令来帮助你优雅的实现版本回退。gitreset假如现在有如下几个提交:其中:

git版本回退之reset和revert

在开发过程中,可能会遇到过错误提交的情况。这种情况下,先不要着急,可以通过以下两个命令来帮助你优雅的实现版本回退。

git reset

假如现在有如下几个提交:

其中:a 和 b 是正常提交,而 c 和 d 是错误提交。现在想把 c 和 d 回退掉。而此时head 指针指向 d 提交(5lk4er)。我们只需将 head 指针移动到 b 提交(a0fvf8),即可。

这个时候就可以使用git reset 命令:

git reset --hard a0fvf8 // 将head指针移动到b提交点
git push origin head --force // 将提交强制推到远程仓库

此时head指针就会移动到 b 提交下:

采用这种方式回退代码会使 head 指针往回移动,从而会失去之后的提交信息且不可恢复,所以要慎重使用。

git revert

git revert会创建一个新的版本,且head指针会指向这个新生成的版本,原来错误提交信息也可以保留。

可以通过用git revert 命令逐个回退:

git revert 5lk4ergit revert 76sdeb

回退版本少的可以逐个回退,多的话就要批量回退了:

git revert older_commit^..newer_commit

通过对比发现,git reset 会失去后面的提交,而 git revert 是通过反做的方式重新创建一个新的提交,而保留原有的提交。所以应尽量使用 git revert 命令来回退版本,慎重使用 git reset 命令。

补充

假如现在有三个提交,不巧的是那个错误的提交刚好位于中间

此时直接使用 git reset 命令将 head 指针重置到 a 提交显然是不行的,因为 c 提交是正确的,需要保留的。

正确的做法:先把 c 和 b 提交全部回退,再使用 cherry-pick 命令将 c 提交重新再生成一个新的提交 c’’,这样就实现了将 b提交回退的需求。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com