0x00 场景
提交代码到git时,想撤回某些已经commit的代码,这些commit甚至已经push到了远程仓库。
0x01 命令reset
命令格式:git reset --soft xxx
xxx代表回退到哪个版本
1. 可以通过git log 查看commitId, 例如9e4509b70594f5f2847ad5a5894f6ca3fb1cf5d3
2. 可以用HEAD表示。
HEAD 在reset操作时常用, 表示当前版本。
HEAD^的意思是最近一次commit,也可以写成HEAD~1,HEAD~2则表示倒数第二个commit。
reset的三种模式:
--mixed
默认参数,不删除本地仓库有改动代码,撤销commit,并且撤销git add .操作。
--soft
不删除本地仓库有改动代码,撤销commit,不撤销git add .操作。
--hard (慎用,会丢失代码)
删除本地仓库有改动的代码,撤销commit,撤销git add .操作。恢复到指定的commit状态。
0x02 场景
场景1: 将本地仓库回退到某次commit
1. git log查看版本,想要回退到9e4509b70594f5f2847ad5a5894f6ca3fb1cf5d3这个提交
2. git reset --soft 9e4509b70594f5f2847ad5a5894f6ca3fb1cf5d3
此时,会有一些未被commit的代码,可以修改之后,重新提交。
场景2: 将远程仓库回退到某次commit,基于某次commit做commit
1. 查看commitId
git log查看版本,想要回退到9e4509b70594f5f2847ad5a5894f6ca3fb1cf5d3这个提交
2. 本地回退
git reset --soft 9e4509b70594f5f2847ad5a5894f6ca3fb1cf5d3
此时,会有一些未被commit的代码,可以修改之后,重新提交。
3. 提交本地,强制推到远程
git add .
git commit -a -m “xx”
git push -f origin jiangu
网友评论