当前位置:   article > 正文

Git代码回滚提交分支_git 回滚分支

git 回滚分支

在项目中会出现当前版本的代码仓出现问题,或者其它的一些情况,需要将当前的代码回滚到之前的某个指定版本上去。

一、git reset回滚到指定的commit_id版本,之后所提交的内容会被全部丢弃

如下图有4笔 commit,现在需要从当前的fourth commit---->4回滚到second commit----->02版本
在这里插入图片描述

  1. 使用git log查看当前提交的历史内容,如上图所示的。
  2. 根据回滚版本所对应的 commit SHA-1值(commit后面的一串数字)来进行回滚操作:
git reset --hard 7ca0f0f296
  • 1
  1. 当前本地仓库就会回滚到指定版本处,如下图所示,指定版本之后所提交的内容全部被丢弃。
    在这里插入图片描述
  2. 此时本地代码落后于远程代码,如果需要将回滚后的本地代码Push到远程代码仓,需要使用–force以强制Push到远程代码仓:
git push --force
  • 1

二、git revert撤销指定的commit内容,相当于进行一次反向commit,以抵消指定commit_id版本所提交的内容,不影响指定commit_id版本之后所提交的内容

如代码仓中有如下的提交history,HEAD指向C。现在需要撤销B的操作,但是保留C的操作。
在这里插入图片描述

  1. 根据log的SHA-1的值来确认要撤销哪一笔 commit的内容,如上图B所对应的Commit_id 。
  2. 根据 B 所对应的 Commit_id 来进行revert操作:
git revert 6205ee287085
  • 1
  1. revert之后的 log 如下图所示:
    在这里插入图片描述
  2. 此时本地相当于新增了一笔Commit,在进行修改之后可以git push到远程仓库保持同步。
  3. 流程图如下:此时 HEAD指向的Commit中,已经没有B所提交的内容,但是C所提交的内容依然保留。

在这里插入图片描述
【注意】 git revert相当于撤销某一笔Commit,它只能对一个文件的最后一次Commit进行revert操作。如果对同一个文件,如file.txt分别进行多次编辑,并Commit,产生如下的History。现在想 revert b的commit,则将会产生冲突。主要原因是c的内容和b的内容在同一个文件上。
在这里插入图片描述
总结:git resetgit revert区别:

  1. git reset相当于直接删除某一指定Commit_id之后的所有提交,来实现回滚到指定版本处。其后的所有Commit都被丢弃。
    在这里插入图片描述

  2. git revert相当于撤销某一处Commit的操作,一般只用来撤销上一步的Commit。若撤销的Commit之间有多个其它的Commit,则很有可能出现Conflict。因为连续多个Commit可能会对同一个文件进行编辑。
    在这里插入图片描述

  3. git reset则相当于回退到某一指定的Commit版本,将其后的所有提交都清除掉。git revert常用于团队开发中,有多人提交代码,需要撤销自己的某一笔 Commit操作,而不影响别人的Commit内容。

本文转载自 https://www.cnblogs.com/Jeffxu/p/16375957.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/424633
推荐阅读
相关标签
  

闽ICP备14008679号