linux上git如何正確回滾程式碼
阿新 • • 發佈:2018-12-26
方法一,刪除遠端分支再提交
①首先兩步保證當前工作區是乾淨的,並且和遠端分支程式碼一致
$ git co currentBranch
$ git pull origin currentBranch
$ git co ./
②備份當前分支(如有必要)
$ git branch currentBranchBackUp
③恢復到指定的commit hash
$ git reset --hard resetVersionHash //將當前branch的HEAD指標指向commit hash
④刪除當前分支的遠端分支
$ git push origin :currentBranch
$ //或者這麼寫git push origin --delete currentBranch
⑤把當前分支提交到遠端
$ git push origin currentBranch
方法二,強制push遠端分支
①首先兩步保證當前工作區是乾淨的,並且和遠端分支程式碼一致
②備份當前分支(如有必要)
③恢復到指定的commit hash
$ git reset --hard resetVersionHash
④把當前分支強制提交到遠端
$ git push -f origin currentBranch
方法三,從回滾位置生成新的commit hash
①首先兩步保證當前工作區是乾淨的,並且和遠端分支程式碼一致
②備份當前分支(如有必要)
③使用git revert恢復到指定的commit hash,當前分支恢復到a>3版本(見下圖)
a)此方法會產生一條多餘的commit hash&log,其實1c0ce98和01592eb內容上是一致的
b)git revert是以要回滾的commit hash(1c0ce98)為基礎,新生成一個commit hash(01592eb)
$ git revert resetVersionHash
④提交遠端分支
$ git push origin currentBranch
方法四,從回滾位置生成新的分支merge
①首先兩步保證當前工作區是乾淨的,並且和遠端分支程式碼一致
②備份當前分支(如有必要)
③把當前工作區的HEAD指標指向回滾的commit hash(注意不是branch的HEAD指標)
Notice:這個時候工作區HEAD沒有指向分支,稱為匿名分支detached HEAD
這個時候提交commit後無法儲存狀態,git中的任何提交必須是在當前工作區HEAD所在分支的HEAD上進行push hash入棧,所以HEAD必須是屬於某個分支的HEAD位置,提交才生效。
$ git co resetVersionHash
④以該commit hash建立一個新的分支
$ git co -b newRevertedHash
⑤切換到當前分支,合併newRevertedHash。
$ git co currentBranch
$ git merge newRevertedHash