[英]Change Git Parent Branch
假設我們有一個分支結構,如:
develop -> --- a --- b --- c
\ \
feature 1 -> \ --- d --- e
\
feature 2 -> --- f --- g
在對特征1進行工作之后,我認為它確實應該作為特征2的子任務分支。
功能1是否有一種方法可以“撤消”開發的分支,而是在保留其提交的同時分支功能2?
例:
develop -> --- a --- b --- c
\
feature 1 -> \ --- d --- e
\ /
feature 2 -> f --- g
最簡單的解決方案是使用帶有--onto
標志的rebase,如Git書中所述 。 命令:
git rebase --onto feature2 develop feature1
將在feature1
之上的develop
中feature2
上的feature2
rebase提交。
通常你會看到git rebase
這類東西,但是它不會起作用,因為從feature1到feature2的rebase將包含你不想要的提交b和c。
Willem建議使用cherry-pick
可能是要走的路。
創建一個新分支:
git checkout -b feature1b feature1
Cherry選擇了感興趣的提交(這里我說的是“feature1的最后兩個提交”,但你可以使用實際的提交ID等指定提交范圍):
git cherry-pick feature1~2..feature1
此時,分支feature1b
匹配您想要的歷史記錄。 您可以根據需要執行一些可選的清理:
刪除舊分支:
git branch -D feature1
重命名新分支:
git branch -m feature1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.