【发布时间】:2017-01-24 15:38:49
【问题描述】:
我不小心推送了一个包含一些大文件的提交,然后又恢复了它。但这会导致任何人拉动这个分支来获取历史中的这些文件,所以我决定删除或压缩这两个提交。但是,已经合并了一些分支。我不知道如何使“git rebase -i”保持分支结构。
历史现在看起来像:
H - new commits
|
G - merge
| \
| F - commits on another branch
| |
E | - some other commits
| |
D | - corrected B
| |
C | - revert B
| |
B | - huge files
| /
A - early commit
我可以改成关注吗?
h - new commits
|
g - merge
| \
| F - commits on another branch
| |
e | - some other commits
| |
d | - corrected B
| /
A - early commit
【问题讨论】:
-
让对方重做合并有可能吗?
-
@TimBiegeleisen 是的,但必须保持结构。
-
交互式变基并删除
huge files和revert B。然后重做合并。最后,挑选之后的新提交。 -
@TimBiegeleisen 谢谢。有没有脚本可以做到这一点?因为在那之后会有一些新的分支和合并,所以手动重放是很困难的。
-
@TimBiegeleisen @nonsensickle 谢谢。
git filter-branch有助于节省空间。虽然还没有弄清楚如何使用它完全删除提交,但对于这种情况来说已经足够了。
标签: git git-rebase git-revert