减轻git仓库中重构代码的影响

时间:2012-03-14 00:44:50

标签: git refactoring

我一直在项目上使用git,还有时间清理。

我有一些已经变得很大的源代码文件,应该分成多个文件。我还想将一些函数从一个文件移动到一个更合适的文件。

由于git跟踪我的所有更改,这是否会有效地增加我的git repo的大小?有办法避免这种情况吗?或者,保持这些变化的历史是更好的做法吗? (如果由于某种原因我想回到我目前所处的凌乱状态)

欢迎提出想法,意见和解决方案! 感谢。

4 个答案:

答案 0 :(得分:2)

与所有修订版本一样,git存储库的大小会随着您的更改而增加,但是,我认为这不应该是您最终担心的问题。我建议在进行这些更改时保留历史记录会更好,尤其是如果出现问题,您可以撤消操作,但也可以帮助现在或将来可能正在使用您的存储库的任何其他人了解某些文件发生了什么(如果他们确实需要使用git blame进行检查)。

(如果你想一起修改或“压缩”以前的版本,你可以看看使用git-rebase,但修改git历史通常会带来灾难性的后果 - 我不建议它,它当然不是'对于胆小的人来说。)

答案 1 :(得分:2)

答案取决于你是否想要回到这个凌乱的状态。恕我直言,你应该总是确保你可以回到较旧的状态,即使那个状态是一团糟......你永远不知道你可能会错误地重构。

也就是说,听起来回购邮件大小是一个问题,所以你不想保留这些大文件。如果是这种情况,也许您可​​以制作当前工作目录的tarball,将其保存在文件大小不是问题的地方,并运行filter-branch command来清理那些大文件。

但是坦率地说,我试图找到处理大存储库大小的方法。保持git中的所有内容绝对是最干净的方式。

答案 2 :(得分:1)

我不希望您的存储库以这种方式增长。记住...

  

Git tracks content not files

如果您的内容的数量没有大幅扩张,那么存储库的数量也不应该。

答案 3 :(得分:1)

请记住关于git(或任何好的版本控制,实际上)的一些事情:

  1. git存储文件之间的差异,而不是所有文件的实际副本
  2. 在引擎盖下,git将垃圾收集并压缩存储库。对于纯文本(如程序代码),这将节省大量空间。
  3. 作为一个完全非科学的测试,我查看了最近的git存储库(在另一个终端窗口中打开),其中有几周的提交。整个目录大约是.git目录大小的两倍,这意味着存储库,所有提交和所有元数据都存储在与构成当前工作目录的文件大致相同的空间量中。

    简而言之,重构,你可能不需要担心磁盘空间。我确定它的尺寸不会翻倍。