安全地删除本地和远程裸存储库上的所有旧git提交?

时间:2014-04-30 09:26:10

标签: git

我是与git“语言”相关的主题的初学者,对我来说并不总是立即理解(合并,“快进”,票务跟踪系统等......听起来很神秘)。

现在我的问题:

  • 我在一台机器上有一个裸存储库
  • 同一台计算机上的本地存储库
  • 我的笔记本电脑上的本地存储库(此处通过ssh远程配置)。
  • 所有存储库中只有一个分支(主服务器)。

当我在一台机器上完成编码时,我提交并推送裸存储库。然后在另一台机器上,我从裸存储库中取出。每次切换时都会这样,所以不会发生冲突。

现在裸存储库和本地存储库(在裸存储库所在的同一台机器上;不在笔记本电脑上)都“太大了”,我需要释放旧提交。

  What is the simplest and safest way to do this ?

另外,如果我想在两个存储库(本地和远程裸机)中删除一组连续提交的目录,怎么能安全轻松地完成?

git书并没有让我感到舒服。 THX

1 个答案:

答案 0 :(得分:0)

您可以尝试的第一件事是使用git gc --prune --aggressive打包存储库。在发出此操作之前,请确保您不需要任何最近的“放弃提交”。此操作清除存储库中的“垃圾”(临时提交,在rebase之前存在提交等),因此垃圾收集后git reflog的输出是干净的。

如果.git /的大小对您来说仍然太大,您可以考虑简化历史记录(例如,将大量小变更合并为一个大变更),或者简单地切断旧的提交。但实际上应与您的同事和其他相关人员讨论。通常情况下,即使对于具有大量更改和大量代码库的大型项目也不需要。

您也可以考虑在笔记本上使用不完整的历史记录(使用git clone --depth ....,请参阅手册页)但请记住,您不能在这样的“部分”存储库中进行新的提交,只能创建补丁并应用它们在一个完整的回购。