Git本地及遠程分支回退


1. git本地版本回退

Git reset --hard commit_id(可用 git log –oneline 查看)

2. git遠程版本回退

git push origin HEAD --force #遠程提交回退

下面的命令也可以實現遠程版本回退

git reset --hard HEAD~1 git push --force

3. git reverse和git reset的區別

  • git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。
  • 在回滾這一操作上看,效果差不多。但是在日后繼續merge以前的老版本時有區別。因為git revert是用一次逆向的commit“中和”之前的提交,因此日后合並老的branch時,導致這部分改變不會再次出現,但是git reset是之間把某些commit在某個branch上刪除,因而和老的branch再次merge時,這些被回滾的commit應該還會被引入。
  • git reset 是把HEAD向后移動了一下,而git revert是HEAD繼續前進,只是新的commit的內容和要revert的內容正好相反,能夠抵消要被revert的內容。

git reset + commit號

git reset命令后面是需要加2種參數的:
”–hard””–soft”

這條命令默認情況下是”–soft”。執行上述命令時,這該條commit號之 后(時間作為參考點)的所有commit的修改都會退回到git緩沖區中。

使用git status命令可以在緩沖區中看到這些修改。而如果加上”–hard”參數,則緩沖區中不會存儲這些修改,git會直接丟棄這部分內容。

但需要注意的一 個問題是:由於這樣的重置是直接在本地的修改,無法提交到遠程服務器,如果直接丟棄的內容已經被推到遠程服務器上了,則會造成本地和服務器無法同步的問題。

即git reset –hard只能針對本地操作,不能針對遠程服務器進行同樣操作。如果從本地刪掉的內容沒有推到服務器上,則不會有副作用;如果被推到服務器,則下次本地和 服務器進行同步時,這部分刪掉的內容仍然會回來。

而上面注意中提到的問題則可以很好的被git revert 命令解決。

git revert + commit 號
該命令撤銷對某個commit的提交,這一撤銷動作會作為一個新的修改存儲起來,這樣,當你和服務器同步時,就不會產生什么副作用。


免責聲明!

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



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