git 回退代碼到指定commit,并新增一個(gè)包含回退代碼記錄的提交

回退代碼到指定commit,并新增一個(gè)包含回退代碼記錄的提交

案例:新代碼已經(jīng)提交到了branchA,臨時(shí)需要緊急修復(fù)線上bug,但branchA分支代碼還不能發(fā)布。需要做一次回退,并保留記錄方便后續(xù)操作。

  • 最新提交為 e1779c26e89231098a2e183e5795a4095ae22ac1

  • 需要將代碼回退到 041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb

  • 并生成一條新的提交包含回退的內(nèi)容

操作步驟:

git checkout 041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb # 回到歷史提交:041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb
git reset --mixed branchA # 把歷史帶到HEAD
git checkout branchA # 簽出HEAD
git add . # 添加修改
git commit # 把041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb和HEAD的 revert diff 提交
git push origin branchA # 推送代碼

最終效果:

  • 新增一個(gè)提交:f108be2e84e198c235c87d3a652f1ce713040669,包含了回退的內(nèi)容

過(guò)程記敘

  • 回到歷史提交 git checkout 041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb
注意:正在切換到 '041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb'。

您正處于分離頭指針狀態(tài)。您可以查看、做試驗(yàn)性的修改及提交,并且您可以在切換
回一個(gè)分支時(shí),丟棄在此狀態(tài)下所做的提交而不對(duì)分支造成影響。

如果您想要通過(guò)創(chuàng)建分支來(lái)保留在此狀態(tài)下所做的提交,您可以通過(guò)在 switch 命令
中添加參數(shù) -c 來(lái)實(shí)現(xiàn)(現(xiàn)在或稍后)。例如:

  git switch -c <新分支名>

或者撤銷此操作:

  git switch -

通過(guò)將配置變量 advice.detachedHead 設(shè)置為 false 來(lái)關(guān)閉此建議

HEAD 目前位于 041ee07df hackathon today 3 api develop
  • 把歷史帶到HEAD git reset --mixed branchA
重置后取消暫存的變更:
打印出變更文件列表
  • 簽出HEAD git checkout branchA
切換回目標(biāo)分支, 通過(guò) git status 可以看出文件差異列表
  • 操作代碼提交
git add . # 添加修改
git commit -m 'revert 某版本' # 把041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb和HEAD的 revert diff 提交
git push origin branchA # 推送代碼
  • 查看結(jié)果 git log
commit f108be2e84e198c235c87d3a652f1ce713040669 (HEAD -> branchA, origin/branchA)
Author: echo <449211678@qq.com>
Date:   Thu Jan 02 17:02:36 2021 +0800

    revert 某版本

加塞做完如何恢復(fù)

假設(shè)加塞完成后最新提交為 a29b52579fc417c2ac0f514c0f9d89f81b218392
找到 上一次回滾前的id: e1779c26e89231098a2e183e5795a4095ae22ac1

git checkout e1779c26e89231098a2e183e5795a4095ae22ac1 # 回到歷史提交:e1779c26e89231098a2e183e5795a4095ae22ac1
git reset --mixed branchA # 把歷史帶到HEAD
git checkout branchA # 簽出HEAD
git add . # 添加修改
git commit -m 'revert new code' # 把e1779c26e89231098a2e183e5795a4095ae22ac1和HEAD的 revert diff 提交
git push origin branchA # 推送代碼
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 回退代碼,分兩種情況, 1.多次提交已經(jīng),提交到服務(wù)器; 2.本地多次提交,沒(méi)有推送到遠(yuǎn)程服務(wù)器; 1.第一種情況...
    pengxiaochao閱讀 1,299評(píng)論 0 1
  • 1、撤銷操作 一來(lái)就是一張大圖,如果不太了解git的人會(huì)有點(diǎn)蒙,下面簡(jiǎn)單解釋一下(都是我個(gè)人的理解,如果不妥還請(qǐng)指...
    Sunny旋律閱讀 22,965評(píng)論 7 39
  • 其他命令 git pull用法: git pull命令的作用是:取回遠(yuǎn)程主機(jī)某個(gè)分支的更新,再與本地的指定分支合并...
    yichen_china閱讀 2,549評(píng)論 0 5
  • 推薦指數(shù): 6.0 書籍主旨關(guān)鍵詞:特權(quán)、焦點(diǎn)、注意力、語(yǔ)言聯(lián)想、情景聯(lián)想 觀點(diǎn): 1.統(tǒng)計(jì)學(xué)現(xiàn)在叫數(shù)據(jù)分析,社會(huì)...
    Jenaral閱讀 6,014評(píng)論 0 5
  • 昨天,在回家的路上,坐在車?yán)镉圃沼圃盏乜粗摹度龉衬墓适隆?,我被里面的?nèi)容深深吸引住了,盡管上學(xué)時(shí)...
    夜闌曉語(yǔ)閱讀 3,952評(píng)論 2 9

友情鏈接更多精彩內(nèi)容