1
我有以下庫:更換提交歷史有一個承諾
* d9da0f2 (HEAD, master) Fifth
| * bf3b476 (branch1) branch1 first
|/
* 13f93d5 Fourth
* 94f2fa1 Third
* 5333eb2 Second
* be69a71 First
所有我試圖做的是做一些它得到如下結構:
* d9da0f2 (HEAD, master) Fifth
| * bf3b476 (branch1) branch1 first
|/
* ?13f93d5? Reworded commit, with all the other commmits squashed/fixuped into it
我嘗試以下操作:
git checkout 13f93d5
git rebase -i --root
reword be69a71 First
fixup 5333eb2 Second
fixup 94f2fa1 Third
fixup 13f93d5 Fourth
但以結束:
* commit a6a091c9bc495b9de5ca51dee5d0032454e669db (HEAD)
Author: frigo <[email protected]>
Date: Fri Nov 7 20:18:55 2014 +0100
First reworded
* commit d9da0f2f273b91913ac241f3b6b034ef7babf1d1 (master)
| Author: frigo <[email protected]>
| Date: Fri Nov 7 20:24:18 2014 +0100
| Fifth
| * commit bf3b476491547523321c765857de2097f77cdbd5 (branch1)
|/ Author: frigo <[email protected]>
| Date: Fri Nov 7 20:23:54 2014 +0100
| branch1 first
* commit 13f93d5ca898a043d37d704d397d34cf1f133a05
| Author: frigo <[email protected]>
| Date: Fri Nov 7 20:20:12 2014 +0100
| Fourth
* commit 94f2fa1bb654288860c6af34c0cc9ff1267e0e72
| Author: frigo <[email protected]>
| Date: Fri Nov 7 20:19:57 2014 +0100
| Third
* commit 5333eb26b57b038b3b4fdf2cb91590c0254b4024
| Author: frigo <[email protected]>
| Date: Fri Nov 7 20:19:24 2014 +0100
| Second
* commit be69a7194413d9760b9f8930edf79afe7095b716
Author: frigo <[email protected]>
Date: Fri Nov 7 20:18:55 2014 +0100
First
如我所料,下面顯示的沒有區別:
git diff 13f93d5 a6a091c
但仍然是所有提交重訂基期後提交保持附着於老犯層次。
我還試圖建立一個移植沒有父文件爲13f93d5
和運行git filter-branch
「把它雕刻成石頭」,但仍然給我留下的歷史與git --all
可見。
謝謝!好答案。我的問題是,我試圖改變的真實存儲庫有兩年的歷史價值,我試圖擺脫和ca. 15-20個功能分支。櫻桃採摘所有分支的所有承諾不是爲了那些微弱的心(=我)。我想我的問題不是最好的。 – frigo 2014-11-08 10:01:16
@frigo你可以挑選一系列的提交,雖然(http://stackoverflow.com/a/1994491/6309:它仍然會工作得很好。 – VonC 2014-11-08 10:02:25
聽起來不錯,會試試看! – frigo 2014-11-08 10:57:03