Thi*_*ner 26 git size history rebase
我正在使用git开始一个项目,我将提交非常大的文件,但每周只有几次.我已经尝试使用git as-is,它似乎将整个文件存储在每次更改的提交中.这不适用于此项目,存储库将失去控制.所以,我想减少存储库的大小.
我的第一个想法是"简单地"删除所有比两周更早的提交,或者只保留例如历史上的五次提交(这可能更好:) :)我用谷歌搜索并阅读了很多来自The Git社区书籍我猜我会需要使用的git-rebase或git-filter-branch.事情是我似乎无法让它工作.
只是为了说明; 我有一个只有一个分支的历史H(主分支)
A - > B - > C - > D - > E.
我想删除一些以前的提交,使我的历史看起来像
C - > D - > E.
提交A和B应该完全清除.我已经尝试了git-rebase但它似乎将提交合并在一起而不是实际删除旧的,也许我不完全理解rebase是如何工作的.另一个想法是从.git/objects中删除所有内容然后使用以下内容构建新提交git-hash-object -w,git-mktree而且git-commit-tree,我还没有设法将这个"人造"树推送到服务器.
我不会与任何分支机构合作,因此不需要考虑这些因素.
我想知道的是,是否有人可以给我具体的用法,git-rebase如果这是我应该使用的?或者其他一些提示,我可以做的例子.
干杯!
编辑:
大文件不会始终是相同的大文件,有些文件将被新文件替换.我希望这些被替换的文件完全从历史中清除.
alt*_*ive 13
这应该是一个简单的git rebase -i地方
p A
s B
s C
p D
p E
Run Code Online (Sandbox Code Playgroud)
然后编辑AC的提交消息,使其成为C的提交消息.
git-rebase会将所有提交"压缩"到一个提交中,其对象与提交C的对象相同.
注意:git filter-branch如果您愿意,可以使用更改先前提交中的大文件以实际匹配新文件.但这是一次危险的行动,我不想在事故上给你一个糟糕的指挥.