我有两个分支,master
和feature
。
我完成了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
经过适当测试和批准后稍后删除它。)
答案 0 :(得分:1)
你的rebase命令错了;)你告诉git在HEAD
之上修改当前分支(feature
,在这种情况下为feature_clean
)。我想你真正想做的是:
git checkout -b feature_clean feature
git rebase -i master
即。来自feature_clean
master
的重播提交。 feature
仍将指向旧提交。
git rebase master
是git rebase --onto master master HEAD
的简写:接受master
和HEAD
之间的所有提交(可从HEAD
到达,但不能从master
到)并将它们粘贴到master
答案 1 :(得分:0)
查看您的功能分支
git checkout feature
创建新的feature_clean分支
git checkout -b feature_clean
将该分支重新分配到您分离主人的地方
git rebase -i --onto shaOfSplit shaOfSplit feature_clean
进行交互式变基
在你的rebase结束时,你将有两个分支从同一点断开。 feature_clean
将是feature