2017-02-14 112 views
2

我有3個分支:主分支A,分支B從A分支到某個點,分支C從B分支。 每個分支都有新的提交,分支B需要有從代碼作爲基礎,C路需要放在B. 的頂部這是我目前的狀況:Git重新定義多個分支

| | | 
| |/
| | C 
|/B 
| 
A 

這就是我想要實現:

| 
    /
    | C 
    | 
    | 
    /B 
| 
| 
| 
| 
A 

所以首先我做過:

B: git pull --rebase origin B 
git checkout C 
git rebase B 

所以分支C是B.

的頂部

然後我做了相同的分支答:

A: git pull --rebase origin A 
git checkout B 
git rebase A 

然後我切換到C路,我注意到,我沒有從變化A(我認爲如果C在B之上,而B在A之上,這意味着C從A變化了),或者我應該以相反的順序完成它。

現在我分歧分支B(可能應該強行推遠程)。

Can I git rebase B again on C branch?有可能性我失去了一些東西嗎?請注意,所有分支都被推送到遠程。

回答

0

--onto選項是您正在尋找的。

git checkout b 
git rebase --onto a b^ 
git checkout c 
git rebase --onto b c^ 
0

你應該通過衍合B和C.隨後已經開始什麼應該一直做的是以下幾點:

# STEP 1 
A: git pull --rebase origin A 
git checkout B 
git rebase A 

# STEP 2 
B: git pull --rebase origin B 
git checkout C 
git rebase B 

如果你想想看這是很明顯。

現在要解決這個問題,我們知道A很好,B也很好。只有C需要向上移動。

git checkout C 
git rebase --onto B A C 

希望幫助