亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將某些提交基于git中的另一個分支?

如何將某些提交基于git中的另一個分支?

Git
鴻蒙傳說 2019-10-14 10:15:40
情況:師父在Xquickfix1在X + 2次提交時這樣:o-o-X (master HEAD)     \      q1a--q1b (quickfix1 HEAD)然后我開始研究quickfix2,但是偶然地將quickfix1作為要復制的源分支,而不是主副本?,F在quickfix2是X + 2提交+ 2相關的提交。o-o-X (master HEAD)     \      q1a--q1b (quickfix1 HEAD)              \               q2a--q2b (quickfix2 HEAD)現在,我想擁有一個帶有quickfix2的分支,但不包含屬于quickfix1的2個提交。      q2a'--q2b' (quickfix2 HEAD)     /o-o-X (master HEAD)     \       q1a--q1b (quickfix1 HEAD)我試圖從quickfix2中的某個修訂版本創建補丁,但該補丁不保留提交歷史記錄。有沒有一種方法可以保存我的提交歷史記錄,但是有一個分支沒有在quickfix1中進行任何更改?
查看完整描述

3 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

這是一個典型的案例rebase --onto:


 # let's go to current master (X, where quickfix2 should begin)

 git checkout master


 # replay every commit *after* quickfix1 up to quickfix2 HEAD.

 git rebase --onto master quickfix1 quickfix2 

所以你應該從


o-o-X (master HEAD)

     \ 

      q1a--q1b (quickfix1 HEAD)

              \

               q2a--q2b (quickfix2 HEAD)

至:


      q2a'--q2b' (new quickfix2 HEAD)

     /

o-o-X (master HEAD)

     \ 

      q1a--q1b (quickfix1 HEAD)

最好在干凈的工作樹上完成。

請參見git config --global rebase.autostash true,尤其是在Git 2.10之后。


查看完整回答
反對 回復 2019-10-14
?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

您可以git cherry-pick用來僅選擇要復制的提交。

最好的方法可能是在master之外創建分支,然后在該分支中使用git cherry-pick所需的quickfix2的2次提交。


查看完整回答
反對 回復 2019-10-14
?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

您可以做的最簡單的事情就是挑選一個范圍。它的功能與相同,rebase --onto但對眼睛更容易:)


git cherry-pick quickfix1..quickfix2


查看完整回答
反對 回復 2019-10-14
  • 3 回答
  • 0 關注
  • 533 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號