1

私はこれを持っています

* [cf0149e] (HEAD, branch_2) more editing
* [8fcc106] some edit
|
|  * [59e643e] (branch_2b) branch 2b
| /
|/
|  * [0f4c880] (branch_2_a) branch 2a
| /
|/
*  [a74eb2a] checkout 1
*  [9a8dd6a] added branch_2 line
|
|
| * [bb903de] (branch_3) branch 3
|/
|
| * [674e08c] (branch_1) commit 1
| * [7d3db01] added branch_1 line
|/
* [328454f] (0.0.0) test

これら2つを組み合わせたいと思います。

*  [a74eb2a] checkout 1
*  [9a8dd6a] added branch_2 line

1つに

*  [a74eb2a] This is old [a74eb2a] + [9a8dd6a]

私が言及したいより多くの順列を試しました:リセット、リベース、スカッシュ、編集。それをやってのけることができないようです。それらをマージすることに成功したときはいつでも、マージは1つのブランチにのみ存在します。たとえば、「branch_2」は、HEAD〜2にある目的の組み合わせになります。ただし、「branch_2b」と「branch_2_a」は、統合したい2つのコミットを示しています。つまり、2つの元のコミットを統合した新しいコミットになります。私が欲しいのは、これら2つのコミットからすべてのブランチを出して、新しい統合コミットを参照するようにすることです。

4

1 に答える 1

2

これらの2つのコミットを押しつぶした後、完全に別の何かと呼ばれる、押しつぶされてからのまったく新しいコミットと履歴になります。

* [cf0149e] (HEAD, branch_2) more editing
* [8fcc106] some edit
|
|  * [59e643e] (branch_2b) branch 2b
| /
|/
|  * [0f4c880] (branch_2_a) branch 2a
| /
|/
*  [a74eb2a] checkout 1
*  [9a8dd6a] added branch_2 line
|
| * [cf0149e'] (HEAD', branch_2') more editing (post-squash rebase)
| * [8fcc106'] some edit (post-squash rebase)
| * [SQUASHED] "checkout 1" + "added branch_2 line"
|/
|
| * [bb903de] (branch_3) branch 3
|/
|
| * [674e08c] (branch_1) commit 1
| * [7d3db01] added branch_1 line
|/
* [328454f] (0.0.0) test

他の現存するブランチは影響を受けないことに注意してください。これは、あなたが行ったのは新しい押しつぶされたコミットが行われるためです。それは他の何の履歴も変更しません。

HEADがを指してcf0149e'いるのは、履歴を変更したため、新しいSHA1ハッシュが含まれるようになります。

rebaseこれで、他のブランチを1つずつオンにすることができます。これは、他のブランチSQUASHEDが分岐したポイントであるため、次のように生成できます。

* [cf0149e] (HEAD, branch_2) more editing
* [8fcc106] some edit
|
|  * [59e643e] (branch_2b) branch 2b
| /
|/
|  * [0f4c880] (branch_2_a) branch 2a
| /
|/
*  [a74eb2a] checkout 1
*  [9a8dd6a] added branch_2 line
|
| * [cf0149e'] (HEAD', branch_2') more editing (post-squash rebase)
| * [8fcc106'] some edit (post-squash rebase)
| |
| |  * [59e643e] (branch_2b') branch 2b (rebased on SQUASHED)
| | /
| |/
| |  * [0f4c880'] (branch_2_a') branch 2a (rebased on SQUASHED)
| | /
| |/
| * [SQUASHED] "checkout 1" + "added branch_2 line"
|/
|
| * [bb903de] (branch_3) branch 3
|/
|
| * [674e08c] (branch_1) commit 1
| * [7d3db01] added branch_1 line
|/
* [328454f] (0.0.0) test

古い歴史は今では無関係なので、実際には次のようになります。

* [cf0149e'] (HEAD', branch_2') more editing (post-squash rebase)
* [8fcc106'] some edit (post-squash rebase)
|
|  * [59e643e] (branch_2b') branch 2b (rebased on SQUASHED)
| /
|/
|  * [0f4c880'] (branch_2_a') branch 2a (rebased on SQUASHED)
| /
|/
* [SQUASHED] "checkout 1" + "added branch_2 line"
|
| * [bb903de] (branch_3) branch 3
|/
|
| * [674e08c] (branch_1) commit 1
| * [7d3db01] added branch_1 line
|/
* [328454f] (0.0.0) test
于 2012-05-25T05:32:21.887 に答える