天天看點

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

一次git錯誤送出的操作記錄:

$ git log

(錯誤的commit記錄,比如:push之前沒有pull,造成代碼錯亂)

commit c15809c85412701b8045c29e42b86ea79b757370 (HEAD -> zhejiang_1.13_part2_videoMsg_20190104)

Author: liupengzhen <[email protected]>

Date: Tue Feb 19 17:57:42 2019 +0800

OCT REM fix videoMst Template list

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

1、先使用reset嘗試恢複:

$ git reset    (回退目前commit的版本)

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

執行之後 $ git status 檢視還是有很多沖突檔案。。

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

2、reset操作無效,使用cherry-pick版本管理操作:

2.1、回退本地送出記錄:

$ git add .

$ git reset --hard

HEAD is now at c15809c854 OCT REM fix videoMst Template list

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

2.2、建立本地分支,保留送出錯誤的版本号(代碼):

$ git branch backup (建立目前分支到backup分支,做記錄)

$ git branch (檢視所有分支)

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

$ git checkout backup (切換backup分支)

Switched to branch 'backup'

$ git log (檢視并記錄最近一次錯誤送出的版本号)

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

$ git branch

* backup

master

zhejiang_1.11.2_ABX_bugfix

zhejiang_1.11.2_ABX_dev

2.3、切換到開發分支,更新下來最新的遠端代碼:

$ git checkout zhejiang_1.13_part2_videoMsg_20190104 (切換到最新代碼的分支)

Switched to branch 'zhejiang_1.13_part2_videoMsg_20190104'

Your branch and 'origin/zhejiang_1.13_part2_videoMsg_20190104' have diverged,

and have 1 and 3 different commits each, respectively.

(use "git pull" to merge the remote branch into yours)

$ git reset --hard origin/zhejiang_1.13_part2_videoMsg_20190104   

(回退一個版本,清空暫存區,将已送出的内容的版本恢複到本地,本地的檔案也将被恢複的版本替換)

HEAD is now at 02f2f76d95 oct rem:送出最新代碼

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

$ git pull (拉取最新代碼)

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

2.4、在開發分支上cherry-pick備份儲存的代碼版本:

$ git cherry-pick c15809c85412701b8045c29e42b86ea79b757370 (檢出之前備份的版本記錄)

[zhejiang_1.13_part2_videoMsg_20190104 3de0bce5a0] OCT REM fix videoMst Template list

Date: Tue Feb 19 17:57:42 2019 +0800

2 files changed, 9 insertions(+), 10 deletions(-)

$ git log (此時看到日志記錄中,檢出的版本已經出現了)

commit 3de0bce5a0a4a187c4f90eb1aa6778c6924679a2 (HEAD -> zhejiang_1.13_part2_videoMsg_20190104)

Author: liupengzhen <[email protected]>

Date: Tue Feb 19 17:57:42 2019 +0800

OCT REM fix videoMst Template list

commit 1f3f17ac2688537afe8639827c187b1c499152a0 (origin/zhejiang_1.13_part2_videoMsg_20190104)

Merge: 02f2f76d95 19231543f9

Author: wujiamin <[email protected]>

Date: Tue Feb 19 18:32:51 2019 +0800

Merge remote-tracking branch 'origin/zhejiang_1.13_part2_february_20190218' into zhejiang_1.13_part2_videoMsg_20190104

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

2.5、送出版本代碼:

$ git push (送出這次版本号的代碼即可)

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

---

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

3、删除本地本分分支:

檢視現有分支情況(remote/origin/master表示的是遠端分支):

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

删除本地備份的分支backup:

git送出錯誤引發的血案——使用cherry-pick等解決git亂序送出問題

(git push origin --delete xxx     可以删除遠端分支xxx)

注:上面當我删除本地分支backup的時候,提示我:The branch 'backup' is not fully merged.

是以,我應該也可以通過git merge backup指令,将該分支上的代碼合到最新分支上。待驗證...