Git版本回退之 reset 和 revert
在開發過程中,可能會遇到過錯誤提交的情況。這種情況下,先不要著急,可以通過以下兩個命令來幫助你優雅的實現版本回退。
git reset
假如現在有如下幾個提交:
其中:A 和 B 是正常提交,而 C 和 D 是錯誤提交。現在想把 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會創建一個新的版本,且HEAD指針會指向這個新生成的版本,原來錯誤提交信息也可以保留。
可以通過用git revert 命令逐個回退:
git revert 5lk4er git revert 76sdeb回退版本少的可以逐個回退,多的話就要批量回退了:
git revert OLDER_COMMIT^..NEWER_COMMIT通過對比發現,git reset 會失去后面的提交,而 git revert 是通過反做的方式重新創建一個新的提交,而保留原有的提交。所以應盡量使用 git revert 命令來回退版本,慎重使用 git reset 命令。
補充
假如現在有三個提交,不巧的是那個錯誤的提交剛好位于中間
此時直接使用 git reset 命令將 HEAD 指針重置到 A 提交顯然是不行的,因為 C 提交是正確的,需要保留的。
正確的做法:先把 C 和 B 提交全部回退,再使用 cherry-pick 命令將 C 提交重新再生成一個新的提交 C’’,這樣就實現了將 B提交回退的需求。
總結
以上是生活随笔為你收集整理的Git版本回退之 reset 和 revert的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cf超级背包在哪买 现在都已经2021年
- 下一篇: 王者荣耀镜怎么一直飞