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