一次git翻車事件

事情起因:迭代結(jié)束后進行代碼審查,我直接在本次已經(jīng)結(jié)束的開發(fā)分支branch-1.3.1上對代碼進行了優(yōu)化,且本地commit了幾次,后發(fā)現(xiàn)一些路由命名與文件不符,進行修改;
當前需求:支隊最后一次commit的文件push即router/index.js;
初始思路:以為和svn一樣,只要在當前文件夾下就只提交當前文件,結(jié)果將之前所有優(yōu)化的內(nèi)容都進行了提交。
出現(xiàn)的問題:導致了已經(jīng)完結(jié)的分支branch-1.3.1的不純潔性和不確定性;
解決方案:摘櫻桃 cherry-pick
第一步:首先在當前本地的branch-1.3.1基礎上創(chuàng)建一個新的分支,保存當前代碼

git checkout branch-v1.3.1copy
image.png

第二步:將分支branch-v1.3.1回滾到當前迭代的版本

git reset --hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96
image.png

到此為止分支branch-v1.3.1已經(jīng)與遠程保持一致
結(jié)果接下來進行了腦殘行為進行了第三步

第三步:將之前優(yōu)化的版本進行摘櫻桃到branch-v1.3.1
切換到branch-v1.3.1分支,然后將branch-v1.3.1copy中優(yōu)化的版本哈希值拷貝即實現(xiàn)摘櫻桃

 git cherry-pick 42249fd7ce9e83f154f48afb5d416e75f0b408ba
image.png

摘櫻桃具體用法如下

//合并一次提交
git checkout B分支
git cherry-pick A的某次提交的哈希值(git log 可以看)
//如果合并A分支最近一次的提交也可以
git cherry-pick A

//合并多個提交
git cherry-pick A1 A2   //A1 A2是提交的哈希值(git log 可以看)
或
git cherry-pick A1.. A3  //從A1到A3都合并過來,不包含A1
或
git cherry-pick A1 ..A3 //包含A1

//其他命令
1、發(fā)生沖突后放棄合并,回到操作之前的狀態(tài)
 git cherry-pick abort 
2、發(fā)生沖突后,退出cherry-pick 但不回到操作之前的狀態(tài)
 git cherry-pick --quit

第三步純粹是走了回頭路,我需要提交的內(nèi)容依然無法提交
最終又重新回到起點,將branch-v1.3.1進行回滾,然后摘櫻桃只摘修改路由的那個哈希值,然后進行提交

其他操作:
過程中創(chuàng)建新分支命名不混亂,又進行刪除分支

// 刪除本地分支
git branch -d branchv.1.3.1copy(分支名)
// 發(fā)現(xiàn)沒成功
// 強制刪除 (成功)
git branch -D branchv.1.3.1copy(分支名)

總結(jié):此次翻車事件純屬操作不規(guī)范,當?shù)Y(jié)束后不應該修改當前分支代碼,除非一些不大的操作且緊急,如果只是自己對代碼進行優(yōu)化應該新創(chuàng)建一個分支進行操作,待下一個迭代進行合并提交

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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