2017-02-14 70 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 

希望帮助