Git版本回退之reset和revert使用詳解
Git版本回退之reset和revert
在開發(fā)過程中,可能會遇到過錯誤提交的情況。這種情況下,先不要著急,可以通過以下兩個命令來幫助你優(yōu)雅的實現(xiàn)版本回退。
git reset
假如現(xiàn)在有如下幾個提交:

其中:A 和 B 是正常提交,而 C 和 D 是錯誤提交。現(xiàn)在想把 C 和 D 回退掉。而此時HEAD 指針指向 D 提交(5lk4er)。我們只需將 HEAD 指針移動到 B 提交(a0fvf8),即可。
這個時候就可以使用git reset 命令:
git reset --hard a0fvf8 // 將HEAD指針移動到B提交點 git push origin HEAD --force // 將提交強制推到遠程倉庫
此時HEAD指針就會移動到 B 提交下:

采用這種方式回退代碼會使 HEAD 指針往回移動,從而會失去之后的提交信息且不可恢復,所以要慎重使用。
git revert
git revert會創(chuàng)建一個新的版本,且HEAD指針會指向這個新生成的版本,原來錯誤提交信息也可以保留。
可以通過用git revert 命令逐個回退:
git revert 5lk4ergit revert 76sdeb

回退版本少的可以逐個回退,多的話就要批量回退了:
git revert OLDER_COMMIT^..NEWER_COMMIT
通過對比發(fā)現(xiàn),git reset 會失去后面的提交,而 git revert 是通過反做的方式重新創(chuàng)建一個新的提交,而保留原有的提交。所以應盡量使用 git revert 命令來回退版本,慎重使用 git reset 命令。
補充
假如現(xiàn)在有三個提交,不巧的是那個錯誤的提交剛好位于中間

此時直接使用 git reset 命令將 HEAD 指針重置到 A 提交顯然是不行的,因為 C 提交是正確的,需要保留的。
正確的做法:先把 C 和 B 提交全部回退,再使用 cherry-pick 命令將 C 提交重新再生成一個新的提交 C’’,這樣就實現(xiàn)了將 B提交回退的需求。

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Postman配置多環(huán)境請求地址的實現(xiàn)
本文主要介紹了Postman配置多環(huán)境請求地址的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
解決Unable to access ''https://gitee.com/自己的項目/'': Could not r
這篇文章主要介紹了解決Unable to access 'https://gitee.com/自己的項目/': Could not resolve host: gitee.com問題,需要的朋友可以參考下2020-09-09
微信小程序中input組件為什么設置readonly只讀屬性沒有作用(失效)?
本文總結(jié)了微信小程序中input組件設置readonly只讀屬性失效的原因,并介紹了三種核心解決方案:使用disabled屬性替代、事件阻止和CSS控制,同時,還推薦了替代方案和最佳實踐建議,并指出了注意事項2026-01-01

