<progress id="nc499"><pre id="nc499"><rt id="nc499"></rt></pre></progress>

<dd id="nc499"><track id="nc499"><dl id="nc499"></dl></track></dd>
  • <nav id="nc499"></nav>

    <span id="nc499"></span>

    Git代碼回滾

    來源:頭條【小安聊編程】 2021-04-13 12:30:43

    法一,刪除遠程分支再提交

    ①首先兩步保證當前工作區是干凈的,并且和遠程分支代碼一致

    $ 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

    ⑥進行代碼diff,完成代碼回滾,push到遠程currentBranch

    Notice: 也可以直接hotfix,從要回滾的地方直接重新打包一個新tag包,發版本hotFixVersion即可。
    原文出處:https://www.toutiao.com/i6950106686552031757/
    版權聲明:本文來源地址若非本站均為轉載,若侵害到您的權利,請及時聯系我們,我們會在第一時間進行處理。
    git