先看圖:git
sourceTree 中 revert 譯爲提交回滾
,做用爲忽略你指定的版本,而後提交一個新的版本。新的版本中已經刪除了你所指定的版本。服務器
reset 爲 重置到此次提交,將內容重置到指定的版本。git reset
命令後面是須要加2種參數的:–-hard
和 –-soft
。這條命令默認狀況下是 -–soft
。spa
執行上述命令時,這該條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