Git回退---reset和revert


今天學習了git回退的兩個命令,現在總結一下:

1.git reset

如果想回退錯誤的提交C和D,只要把指針移到B上

git reset --hard a0fvf8

而這時候,遠程倉庫的指針還在D上,如果直接用 git push 將無法推到遠程倉庫,所以只能用 git push -f 強制推到遠程倉庫,

這樣會有弊端,當你發現C和D不是錯誤的或者有用的話,將無法找回,因為已經指針遠程倉庫的指針已經在B上了。

這時候 git revert 就有作用了

2.git revert

git revert的作用通過反做創建一個新的版本,這個版本的內容與我們要回退到的目標版本一樣,但是HEAD指針是指向這個新生成的版本,而不是目標版本。

 

單個回退,先revert C,在revert D

git revert 5lk4er
git revert 76sdeb

批量回退

git revert OLDER_COMMIT^..NEWER_COMMIT

 

這樣,錯誤的C和D依然保留,以后可以找得回,最后直接 git push 直接推到遠程倉庫。

在舉個例子:

錯誤的B在A和C中間,這時的操作是

先revert B,git revert a0fvf8

在revert C, git revert 76sdeb

再使用 cherry-pick 命令將 C 提交重新再生成一個新的提交 C'',這樣就實現了將 B提交回退的需求。

3.區別:

通過以上對比可以發現,git reset 與 git revert 最大的差別就在於,git reset 會失去后面的提交,而 git revert 是通過反做的方式重新創建一個新的提交,而保留原有的提交。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM