我正在处理3个分支,我想同时将一个分支从另外两个分支上进行变基。
我得到的结果是:
git log --graph --decorate --pretty=oneline --abbrev-commit
以下是分支A:
* f751d1a (A) commit2
* 4e552f3 (master) commit1
分支B:
* 3770d35 (B) commit3
* 4e552f3 (master) commit1
这是 C 分支,我首先从 A 分支进行了变基,然后又从 B 分支进行了变基:
* 9740b0e (HEAD, C) commit4
* a280f0a commit2 //same commit name but different sha code
* 3770d35 (B) commit3
* 4e552f3 (master) commit1
当我执行
git checkout C
git rebase A
我得到了以下内容:
* 2e08816 (HEAD, C) commit4
* bbc77ad commit3 //different sha-code
* f751d1a (A) commit2
* 4e552f3 (master) commit1
当我执行以下操作时:
git checkout C
git rebase B
我收到了以下内容:
* bf67d55 (HEAD, C) commit4
* f69ecdd commit2 //different sha code
* 3770d35 (B) commit3
* 4e552f3 (master) commit1
但是,我真正需要的是创建 C 分支。
* 1234567 (HEAD, C) commit4
* 3770d35 (B) commit3
* f751d1a (A) commit2
* 4e552f3 (master) commit1
不改变分支A和B的情况下。
我做了一些研究,但无法弄清楚如何操作。是否有可能实现,有什么方法可以做到?
换句话说,我该如何转换
master---A
\
B---C
or
master---B
\
A---C
to
A
/
master---B
\
A---B---C
or something like this.
提前感谢...
附加问题:
谢谢(@Brian Phillips, @Useless)! 合并后,它似乎按照我的要求工作。然而,后来我在B中进行了提交,并使用git rebase master -i
与行进行了“修复”。
pick 3770d35 commit3
fixup 3cbf79d commit4
它随着
git merge B
而变成以下内容:* 5fa9192 (HEAD, C) Merge branch 'B' into C
|\
| * 147258a (B) commit3 //changed content after fixup
* | 7768962 Merge branch 'B' into C
|\ \
| * | 3770d35 B commit3
| |/
* | f751d1a (A) commit2
|/
* 4e552f3 (master) commit1
使用 git rebase B
命令后,它将变成:
* 0e1355b (HEAD, C)
* 147258a (B) commit3 //changed content after fixup
* 4e552f3 (master) commit1
有没有办法保持它这样:
* (HEAD, C) 5454215 Merge branch 'B' into C
|\
| * 147258a (B) commit3 //changed content after fixup
| |
* | f751d1a (A) commit2
|/
* 4e552f3 (master) commit1