我的分支机构有以下情况:
正如你所看到的,另一个分支(绿色)是在前一段时间从我们的主分支(红色)创建的,有些提交已添加,然后合并回我们的主分支,它没有收到任何提交的意思时间。从那以后,红色分支中增加了一些提交,所以我们的头实际上比左边稍远一些。
我如何将这个分支重新定位到自己(第一个提交到右边)来压缩它的提交历史,包括从绿色分支到红色分支的所有提交(所以我实际上只有单个分店左)?
修改 我设法通过软件将HEAD重置为e来解决它,然后压缩所有内容,然后将分支软重置为a,将b,c和d提交到a然后应用我的存储内容。快速和工作就像一个魅力!
感谢您的帮助!
答案 0 :(得分:1)
根据提交d
git checkout -b RB d
main
|
V
a----------------e----f
\ /
b------c-----d
^
|
RB
重新定位main
分支
git rebase main
main
|
V
a----------------e----f
\ /
b------c-----d----e'-----f'
^
|
RB
切换回主分支并将其重置为重新分支
git checkout main
git reset --hard RB
main
|
|
a----------------e----f |
\ / V
b------c-----d----e'-----f'
^
|
RB
git gc有一天会清除提交e
和f
,因为它们不再被引用。
所以有一天你的存储库看起来像这样
main
|
V
a---b----c----d----e'-----f'
^
|
RB
只要git gc没有删除e
和f
,您就可以使用其提交ID来恢复它们。
git checkout -b restored_main f
答案 1 :(得分:-1)
使用命令尝试交互式变基:
git rebase -i Head~6
这将弹出最近6次提交的记事本。你不需要改变它只是保存和关闭。在rebase完成后,您的提交历史记录应该没问题。