如何创建一个新分支清理另一个分支的提交?

时间:2011-08-10 20:44:27

标签: git rebase code-cleanup

我有两个分支,masterfeature

我完成了feature的工作,所以这个分支有很多提交,但我不想按原样发布它。我想创建一个名为feature_clean的分支,其中包含feature的所有修改,但提交的内容更好。

我尝试了以下内容:

git checkout -b feature_clean master
git checkout feature
git rebase --interactive feature_clean
# reorganize commits etc, save and close editor

,这正确地创建了feature_clean但它也修改了feature。事实上,两个分支都是平等的。

我做错了什么?我希望暂时保留feature(我会在feature_clean经过适当测试和批准后稍后删除它。)

2 个答案:

答案 0 :(得分:1)

你的rebase命令错了;)你告诉git在HEAD之上修改当前分支(feature,在这种情况下为feature_clean)。我想你真正想做的是:

git checkout -b feature_clean feature
git rebase -i master

即。来自feature_clean master的重播提交。 feature仍将指向旧提交。

git rebase mastergit rebase --onto master master HEAD的简写:接受masterHEAD之间的所有提交(可从HEAD到达,但不能从master到)并将它们粘贴到master

答案 1 :(得分:0)

  1. 查看您的功能分支
    git checkout feature

  2. 创建新的feature_clean分支
    git checkout -b feature_clean

  3. 将该分支重新分配到您分离主人的地方
    git rebase -i --onto shaOfSplit shaOfSplit feature_clean

  4. 进行交互式变基

  5. 在你的rebase结束时,你将有两个分支从同一点断开。 feature_clean将是feature

    的重定格版本