擠壓這兩次提交後,您會擁有自壁球一個全新的承諾和歷史,所謂的完全是另一回事:
* [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
其他分支,一個接一個,在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
好的,我明白了。這就是我在玩了一整天的各種想法之後開始懷疑的事情。這樣做後清除舊的(不相關的)歷史的最好方法是什麼? –
你不必!只要沒有分支指向該歷史的任何部分,它就如同走了一樣好,最終Git將垃圾收集它。 – Ashe