Git 回滾代碼的正確姿式

git revertgit reset 的區別

先看圖:git

sourceTreerevert 譯爲提交回滾,做用爲忽略你指定的版本,而後提交一個新的版本。新的版本中已經刪除了你所指定的版本。服務器

reset重置到此次提交,將內容重置到指定的版本。git reset 命令後面是須要加2種參數的:–-hard–-soft。這條命令默認狀況下是 -–softspa

執行上述命令時,這該條commit號之 後(時間做爲參考點)的全部commit的修改都會退回到git緩衝區中。使用git status 命令能夠在緩衝區中看到這些修改。而若是加上-–hard參數,則緩衝區中不會存儲這些修改,git會直接丟棄這部份內容。能夠使用 git push origin HEAD --force 強制將分區內容推送到遠程服務器。code

代碼回退

默認參數 -soft,全部commit的修改都會退回到git緩衝區
參數--hard,全部commit的修改直接丟棄it

$ git reset --hard HEAD^        回退到上個版本
$ git reset --hard commit_id    退到/進到 指定commit_id

推送到遠程im

$ git push origin HEAD --force

能夠吃的後悔藥->版本穿梭

當你回滾以後,又後悔了,想恢復到新的版本怎麼辦?db

git reflog打印你記錄你的每一次操做記錄img

$ git reflog

輸出:
c7edbfe HEAD@{0}: reset: moving to c7edbfefab1bdbef6cb60d2a7bb97aa80f022687
470e9c2 HEAD@{1}: reset: moving to 470e9c2
b45959e HEAD@{2}: revert: Revert "add img"
470e9c2 HEAD@{3}: reset: moving to 470e9c2
2c26183 HEAD@{4}: reset: moving to 2c26183
0f67bb7 HEAD@{5}: revert: Revert "add img"

找到你操做的id如:b45959e,就能夠回退到這個版本推送

$ git reset --hard b45959e
相關文章
相關標籤/搜索