git rebase --onto 的奇妙用法

場景

開發項目的過程當中,在特殊的大環境下,由於項目涉及到一些敏感的信息,項目方提出了需求,須要將現有的項目暫時修改,以適應當下的政策,可是過了這段時間還須要恢復,同時未恢復的這段時間,咱們也實現了不少新的需求。如上圖,紫色塊是爲了適應政策調整的,也就是之後恢復的時候要捨棄的部分。而白色塊下方的黃色塊就是我備份的,而等項目要恢復之後咱們真的要須要的就是整個黃色塊的流程。git

解決方法

在備份的基礎上,將全部後提交的黃色塊對應的commit給合併過來,而咱們強大的git,也有相應的命令能夠處理。即bash

// base分支名稱
// from待合併片斷的起始commitId(不包含)
// to待合併片斷的結束commitId(包含)
git rebase --onto base from to
複製代碼

操做步驟

1.當前工做空間---分支A
2.從當前工做的分支新建一個分支,而且換到該分支----git checkout -b newbranch
3.git rebase --onto B 開始的commitId 結束的commitId
4.生成一個基於B分支和選擇的提交區間的片斷生成一個新的分支(detached Head)
5.從當前工做空間新建切換到一個新的分支---git checkout -b branch_bank
6.分支branch_bank的代碼就是咱們所須要的了
7.branch_bank強制覆蓋A分支,切換到A分支,---git reset --hard origin branch_bank
8.代碼就恢復正常啦
複製代碼

感慨

每次用git的命令解決一個新的問題,都感受發現了新大陸。。spa

相關文章
相關標籤/搜索