Git回退版本的几种操作

场景:当我们在使用Git进行版本控制时,可能会遇到以下几种需要回退版本的场景:

场景一:如果想将代码恢复到之前某个提交的版本,且那个版本之后提交的版本都不要了,这种场景常发生在合并分支时合并结果不符合预期,就可以使用 git rest(恢复到一个旧版本并且旧版本后的都不要)

  • 原理:git reset --hard命令会将HEAD指针、当前分支指针和索引区都移动到指定的commit ID,从而重置工作区为该版本。
  • 操作:
    1、查看版本号:git log查找历史或使用git reflog命令查找合并操作的commit ID,也可以上代码托管网页上查看history,找到需要回滚的目标版本号
    2、 使用git reset --hard 版本名命令将版本回退。此命令会将HEAD指针、当前分支指针和索引区都指向指定的commit ID,并重置工作区为该版本。
    3、使用git push -f提交更改,此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧,用“git push -f”强制推上去。

场景二:如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。(恢复到一个旧版本并且旧版本后的都保留)

我们commit了三个版本,突然发现版本2有bug,想要撤销版本2,但又不想影响版本3的提交,就可以用 git revert 命令来反做版本2,生成新的版本4,这个版本4里会保留版本3的东西,但撤销了版本2的东西。

  • 原理:git revert命令会生成一个新的提交,该提交会包含撤销指定提交的更改,从而达到回退版本的效果。
  • 操作:
    1、查看版本号:git log查找历史或使用git reflog命令查找合并操作的commit ID,也可以上代码托管网页上查看history,找到需要回滚的目标版本号
    2、
    (1) 使用git revert -n 版本号反做
    注意: 这里可能会出现冲突,那么需要手动修改冲突的文件。而且要git add 文件名
    (2)提交,使用git commit -m 版本名提交
    (3) 使用git push推上远程库: