私は3つのブランチで作業しており、同時に1つのブランチを他の2つのブランチからリベースしたいと考えています。
私が得たもの
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
に
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