首先,我很抱歉这个头衔。我不知道在没有样本的情况下描述这个问题。
1。这是我的问题:
我有这样的历史:
C1-->C2-->C3-->C4-->C8 --> develop
| |
C5-->C6-->C7 --> feature (this branch was deleted after merge)
这种历史难以控制。
我知道此历史记录的出现是因为我首先将feature
合并到develop
而没有git rebase
。
但是,无论如何都要将上述历史重新写入这样的新历史:
C1 - > C2 - > C3 - > C4 - >的 C5 - > C6 - > C7 - > C8
2。这是我解决问题的方法:
[创意]: 有4组提交:
feature
分支develop
分支的因此,将所有提交组拆分为新分支=>然后再与git rebase
合并。
第1步: 将所有提交C5,C6,C7拆分为新分支(稍后将其合并)
git checkout develop
git checkout C7
git checkout -b staging1
staging1
C1-> C2-> C5-> C6-> C7 - > staging1
第2步: rebase develop
分支以删除合并功能。
git checkout develop
git rebase HEAD~2
develop
的历史变成了
C1-> C2-> C3' - > C8' - >开发
第3步: 将提交C8'拆分为新分支
git checkout develop
git checkout -b staging2
第4步: 将develop
分支重置为C3'
git checkout develop
git reset --hard C3'
develop
的历史变成了
C1-> C2-> C3' - >开发
第5步将staging1
合并到develop
Rebase first
git checkout staging1
git rebase develop staging1
然后合并
git checkout develop
git merge --no-ff staging1
develop
的历史变为:
C1 - > C2 - > C3 ' - >的 C5' - > C6 ' - > C7'
第6步将staging2
合并到develop
重新登陆
git checkout staging2
git rebase develop staging2
然后合并
git checkout开发
git merge --no-ff staging2
develop
的历史变为:
C1 - > C2 - > C3 ' - >的 C5' - > C6 ' - > C7' - > C8 ''
但是C4(合并提交)丢失了。 (我需要花更多的精力再次合并)。 我的方法看起来很复杂,很容易出错。
所以,我的问题是:
答案 0 :(得分:0)
怎么样:
git checkout C8
git rebase HEAD~4
或
git rebase -i HEAD~4
如果要重新排序提交。