git 版本回退

image.png

git reset 命令三个参数,后面可以跟 commitId 或者文件名称

git reset --soft ;
git reset --mixed;
git reset --hard;

--soft: 工作区不回退,暂存区不回退,本地仓库回退
--mixed: 工作区不回退,暂存区回退,本地仓库回退(默认)
--hard: 工作区,暂存区,本地仓库都回退

例子:

git reset --hard HEAD^ (id 号)回退到上一个版本

git checkout -文件名:撤销工作区全部修改
git reflog: 记录每一次的操作命令

注意: resetrevert 的区别

revert 是撤销指定版本的内容并提交一次新的commit
reset 是 HEAD 重新指向某个 commit
reset 是 HEAD 向后移动了,而 revert 是 HEAD 继续前进

修改远程仓库地址: git remote set-url origin 地址

一、例子:我这里开发的代码提交到了错误的分支(当前所在分支:v2.8),应该提交到v2.7,实际提交到了v2.8。
二、正确的做法

  1. v2.8分支回滚到远程原来正确的commit
  2. 把自己开发的代码提交到v2.7分支

三、解决办法

  1. 回滚v2.8分支
    1). 备份当前分支:git checkout -b v2.8bak
    2). v2.8分支回滚到远程原来正确的commit: git reset --hard [正确的commitId]
    3). 将本地回滚的代码强行提交覆盖到远程分支:git push -f origin v2.8
  2. 把自己开发的代码提交到v2.7分支
    1). 切换到 v2.8bak 分支:git checkout v2.8bak
    2). 回退自己已经开发好的代码:git reset --mixed [commitId]
    3). 缓存代码: git stash
    4). 切换到v2.7分支:git checkout v2.7
    5). 将代码合并到v2.7:git stash pop
    6). 解决好冲突后将代码提交到v2.7:git commit -m "注释"; git push origin v2.7

你可能感兴趣的:(git 版本回退)