我有一个使用git跟踪用户内容更改的CMS - 我每晚都将它们汇总到一个提交中。可以想象,每天提交一个有趣的提交日志。
我想整理一下,并且认为我可以通过将提交(大约100左右)重新设置为单个提交来实现。这是针对这些自动提交的合适策略吗?如果在两个或多个提交中引用相同的文件,我会遇到冲突吗?将100改为1,似乎太容易了。
E:这些是内容更改,而不是代码库更改,因此它们并不重要。每隔一段时间滚动更改以清理历史记录会很不错。
答案 0 :(得分:0)
通过运行rebase -i <upstream>
并在Git提供的提示中将100次提交标记为“squash”提交,您应该没有问题。 Git将一个接一个地应用每个补丁,最终会在最终提交时反映出存储库状态的单个提交。选择“fixup”会做同样的事情,但会删除中间提交消息(这听起来更像你正在寻找的)。
如果您在重新定位时遇到一些无法预料的问题,一个简单的git rebase --abort
会将您恢复到原始存储库和版本历史记录。
然而,Git非常节省空间,因此如果您不想丢失历史记录,可以尝试运行git gc
。这将执行Git“内务”任务,例如将提交压缩为“Packfiles”。如果用户内容日常没有显着变化,那么Git应该能够非常紧密地压缩您的历史记录。 git gc --aggressive
将更加努力地压缩您的提交。