我正在使用Git启动一个项目,需要提交很大的文件,但每周只提交几次。我尝试使用原始Git进行操作,但似乎每次更改都会在提交中存储整个文件,这对于这个项目来说行不通,存储库会失控。因此,我想缩小存储库的大小。
我的第一个想法是“简单地”删除所有早于两周的提交,或仅保留历史记录中的前五个提交(这可能更好:))。我已经从Git社区书籍中谷歌并阅读了很多内容,我想我需要使用 git-rebase
或 git-filter-branch
来完成。问题是,我似乎无法让它工作。
为了说明,我有一个仅有一个分支(主分支)的历史 H:
A --> B --> C --> D --> E
我想要删除一些先前的提交,使历史记录如下所示:
C --> D --> E
提交 A 和 B 应该被完全清除。我尝试过使用 git-rebase
,但它似乎只是合并提交而不是实际删除旧的提交,也许我没有完全理解重置的工作原理... 我还想到另一种方法,即从 .git/objects 中删除所有内容,然后使用 git-hash-object -w
、git-mktree
和git-commit-tree
建立一个新的提交,但我还没有成功将这个“人造”树推送到服务器上。
我不会使用任何分支,因此无需考虑它们。
我想知道是否有人可以给我提供 git-rebase
的具体用法,如果这是我应该使用的工具?或者其他提示、示例、我可以做些什么。
谢谢!
编辑:
大文件不会一直是同一个大文件,有些文件将被新文件替换。我希望这些被替换的文件能够完全清除历史记录。
git rm
)了? - Paŭlo Ebermanngit-rebase
会移动提交并将它们应用于不同的头部,或者如果你传递了-i
参数,它会让你重写和“压缩”提交,改变顺序,执行命令,编辑提交消息等。没有涉及到合并。 - alternative