在我的feature分支中,历史记录如下所示
来自主->的分支添加提交->合并主->上的最新提交添加更多提交
在“添加提交”部分添加了一些大文件,然后在“添加更多提交”中删除了这些文件。我想压缩特性分支上第一组和第二组提交中的一些提交,以释放此空间。不幸的是,从master合并似乎会使这一点变得困难。
这似乎与其他类似的问题不同,因为两个分支仍然是分开的,但我只是合并了master的最新提交。feature分支只由我使用,所以我可以重写它的历史记录。
发布于 2019-08-13 20:08:10
我将绘制您的场景,以便更容易地讨论:
master
v
A--B--C
\ \
D--E--M--F--G
^
feature现在,为了便于讨论,让我们假设您想要将提交G (发生在合并之后)压缩为提交E (发生在合并之前)。
正如@iBug在comment中指出的那样,最简单的方法-因为您拥有分支-是简单的压缩,然后重做合并,因为在默认情况下,交互式rebase将丢弃选定范围内的所有合并提交。
但是,如果您真的想让M保持在原来的位置,可以尝试使用--rebase-merges选项执行迭代活动rebase:
git checkout feature
git rebase -i --rebase-merges D使用--rebase-merges时,
将通过重新创建合并提交来尝试保留要重新建立基础的提交中的分支结构。
但是,请记住:
这些合并提交中任何已解决的合并冲突或手动修改都必须手动解决/重新应用。
因此,在这种情况下,--rebase-merges为您带来的唯一好处就是,在您挤压提交之后,合并提交将保留在feature分支的历史记录中的相同位置。
https://stackoverflow.com/questions/57472022
复制相似问题