我的回购中有一段丑陋的历史,我想简化它一点点。从我读过的,git rebase将是我应该使用的工具。我想做的是:
转过来:
A--------------------------I (master)
\ /
B--C-------------G--H--/ (development)
\ /
D--E------/ (feature-1)
\ /
F--/ (feature-2)
进入这个:
A-BCDEFH--I (master)
在提交“我”之后,我还有其他提交方式相同,所以我希望我的最终历史看起来像:
A-BCDEFH--I--KLMNO-P (master)
有关如何完成此任务的任何指示?
编辑:请注意,在这个例子中,D和F不是合并提交 - 它们是标准提交,所以它们都不应该从历史中消失(尽管合并提交,G和我应该)。
答案 0 :(得分:1)
你可以用这个完成第一步:
$ git checkout -b new-master master
$ git rebase --onto A A new-master
其中A
是图表中A提交的提交标识符。
这将创建一个新的分支new-master
,最终将以您想要的master
形式结束(合并提交,不会引入自己的更改将从历史记录中删除)。要移植到其他分支,请逐个检查并发出git rebase --onto new-master master branchname
。
如果您对更改感到满意,可以更新master
分支并删除new-master
:
$ git checkout master
$ git reset --hard new-master
$ git branch -d new-master