0x00 場景
提交代碼到git時,想撤回某些已經(jīng)commit的代碼挫剑,這些commit甚至已經(jīng)push到了遠程倉庫去扣。
0x01 命令reset
命令格式:git reset --soft xxx
xxx代表回退到哪個版本
1. 可以通過git log 查看commitId, 例如9e4509b70594f5f2847ad5a5894f6ca3fb1cf5d3
2. 可以用HEAD表示。
HEAD 在reset操作時常用樊破, 表示當前版本愉棱。
HEAD^的意思是最近一次commit,也可以寫成HEAD~1哲戚,HEAD~2則表示倒數(shù)第二個commit奔滑。
reset的三種模式:
--mixed
默認參數(shù),不刪除本地倉庫有改動代碼顺少,撤銷commit朋其,并且撤銷git add .操作。
--soft
不刪除本地倉庫有改動代碼脆炎,撤銷commit梅猿,不撤銷git add .操作。
--hard (慎用秒裕,會丟失代碼)
刪除本地倉庫有改動的代碼袱蚓,撤銷commit,撤銷git add .操作几蜻±耍恢復到指定的commit狀態(tài)。
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