Git本地及遠程分支回退

1. git本地版本回退

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

2. git遠程版本回退

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

下面的命令也能夠實現遠程版本回退nginx

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」git

這條命令默認狀況下是」–soft」。執行上述命令時,這該條commit號之 後(時間做爲參考點)的全部commit的修改都會退回到git緩衝區中。sql

使用git status命令能夠在緩衝區中看到這些修改。而若是加上」–hard」參數,則緩衝區中不會存儲這些修改,git會直接丟棄這部份內容。服務器

但須要注意的一 個問題是:因爲這樣的重置是直接在本地的修改,沒法提交到遠程服務器,若是直接丟棄的內容已經被推到遠程服務器上了,則會形成本地和服務器沒法同步的問題。spa

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

而上面注意中提到的問題則能夠很好的被git revert 命令解決。同步

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

相關文章
相關標籤/搜索