Git

git reset 撤回本地仓库、远程仓库的commit操作

2019-10-17  本文已影响0人  背锅填坑交给我

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 
上一篇下一篇

猜你喜欢

热点阅读