2014-11-08 68 views
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可见。

回答

1

git checkout aSHA1表示您处于分离的HEAD模式。

你应该让你的互动变基带:

git checkout master 
git rebase -i --root 

执行改写和修正内容你做,一边捡d9da0f2(当前的主头)

注意,这将会使branch1搁浅:

# after the rebase: 

git branch -f branch1 master~1 
git checkout branch1 
git cherry-pick bf3b476 
+0

谢谢!好答案。我的问题是,我试图改变的真实存储库有两年的历史价值,我试图摆脱和ca. 15-20个功能分支。樱桃采摘所有分支的所有承诺不是为了那些微弱的心(=我)。我想我的问题不是最好的。 – frigo 2014-11-08 10:01:16

+0

@frigo你可以挑选一系列的提交,虽然(http://stackoverflow.com/a/1994491/6309:它仍然会工作得很好。 – VonC 2014-11-08 10:02:25

+0

听起来不错,会试试看! – frigo 2014-11-08 10:57:03