💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

  • 推荐:「stormsha的主页」👈,持续学习,不断总结,共同进步,为了踏实,做好当下事儿~
  • 专栏导航
  • Python面试合集系列:Python面试题合集,剑指大厂
  • GO基础学习笔记系列:记录博主学习GO语言的笔记,该笔记专栏尽量写的试用所有入门GO语言的初学者
  • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
  • 运维系列:总结好用的命令,高效开发
  • 算法与数据结构系列:总结数据结构和算法,不同类型针对性训练,提升编程思维

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨


💖The Start💖点点关注,收藏不迷路💖



📒文章目录

  • Git Reset
  • Git Revert
  • 区别和应用场景
  • 结论



Git系列:git reset与git revert命令的比较与应用_git

在Git版本控制系统中,git resetgit revert是两个用于撤销更改的常用命令,它们在实现目的上相似,但在操作方式和结果上存在显著差异。

Git Reset

git reset命令用于将当前分支的HEAD指针移动到指定的状态,但不会自动更新工作目录。根据提供的参数不同,它的行为也有所不同:

  • --soft:仅移动HEAD指针,改动的文件保留为未暂存状态。
  • --mixed(默认):移动HEAD指针,并且重置索引,改动的文件保留为未提交状态。
  • --hard:移动HEAD指针,重置索引,并且改动的文件会被丢弃。

例如,如果你想要将develop分支回退到某个特定的提交(例如commit 1),并且不需要该提交之后的所有更改,可以使用以下命令:

git reset 1 --hard

这将导致从commit 1之后的所有提交都被删除,包括已经合并的分支。如果需要将这些更改推送到远程仓库,可以使用:

git push origin develop --force

但请注意,--force选项会覆盖远程仓库的历史,这可能会对其他协作者造成影响。

Git Revert

git reset不同,git revert通过创建一个新的提交来撤销之前的提交所做更改。这个新的提交会反做之前提交的所有变化,从而保持项目历史的完整性。

如果你想要撤销develop分支上某个已合并分支(如feature/a)的更改,可以使用:

git revert <commit_id>

这里的<commit_id>是你想要撤销的合并提交的ID。git revert会生成一个新的提交(如commit 4),它将feature/a分支的更改全部撤销。

区别和应用场景

  • git reset更像是直接擦除历史,而git revert则通过创建一个新的提交来“反做”之前的历史。
  • 使用git reset后,如果需要重新合并某个分支,可能会遇到问题,因为它实际上删除了分支的历史。而git revert则不会,因为它保留了分支的历史,只是通过新的提交来抵消之前的变化。
  • 如果你希望保留分支的历史,并且未来可能需要重新合并相同的代码,git revert是更好的选择。
  • 如果你需要彻底移除一些不应该被追踪的更改,并且不介意影响项目历史,可以使用git reset

结论

在选择使用git reset还是git revert时,需要根据具体情况和需求来决定。通常,如果需要保持项目历史的完整性,推荐使用git revert。如果需要彻底删除某些更改,并且不会影响未来的合并操作,可以使用git reset。不过,使用git reset --hard时要特别小心,因为它会丢失未提交的更改,并且在多人协作的项目中可能会带来问题。


❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏、分享下吧,非常感谢!👍 👍 👍

🔥🔥🔥道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙


💖The End💖点点关注,收藏不迷路💖