3

我有一个工作目录,我在其中一台计算机上使用 GIT 进行跟踪,并且在过去的某个时间点,我在外部硬盘驱动器上创建了一个远程(裸机)存储库。这个遥控器叫做origin. 然后我稍后在其他计算机上克隆了该存储库。自从我创建 以来origin,我通过将所有更改从任何计算机推送到它来确保始终保持最新状态。然后我将这些更改拉回其他计算机,以便我的工作目录都相同。

前几天我决定重组我的外置硬盘。我在驱动器上的不同位置创建了一个新的裸仓库(我们称之为它other_remote),将其作为新远程添加到我的一台计算机上的工作目录中,并将该工作目录推送到它。

现在,我打算origin从我的硬盘中删除 repo,但在继续之前,我有疑问,我决定比较两个远程 repo,以确保我没有做让我后悔的事情。

我开始了du,我得到了这个:

$ du -sch origin                                                                                                                                  
207M    origin
207M    total

$ du -sch other_remote                                                                                                                      
34M     other_remote
34M     total

现在吓到我了!我显然还没有删除origin。我做了很多研究(在这里和谷歌上),但我找不到任何相关信息。

我发现的唯一一件事是有人说你可以用它git count-objects -v来很好地估计回购的大小。但同样,这个命令在我的两个裸仓库中给出了完全不同的结果:

$ cd path/to/origin
$ git count-objects -v
count: 137
size: 211976
in-pack: 0
packs: 0
size-pack: 0
prune-packable: 0
garbage: 0

$ cd other/path/to/other_remote
$ git count-objects -v
count: 6
size: 9888
in-pack: 131
packs: 1
size-pack: 24725
prune-packable: 0
garbage: 0

谁能帮我理解为什么我的两个远程仓库如此不同?我可以安全地擦除origin并只保留other_remote吗?如果我这样做会丢失一些信息吗?

非常感谢

4

1 回答 1

0

首先,git count-objects只计算未打包的对象(在仓库中,它们很可能在初始推送后被打包)。
另请参阅“为什么我的 git 存储库这么大? ”以了解相同数量文件的更大存储库的原因,以及“我是否需要在裸存储库上运行 git gc? ”(由于悬空提交而导致对象松散)

关键是,新的裸回购可能比具有相同历史的活跃非裸回购要小。

然后,确保您已推送所有内容(所有分支和所有标签)。
参见例如“使用 GitHub 如何在添加现有存储库时推送所有分支? ”。
你只是git push myNewBareRepo,还是git push --all myNewBareRepo

于 2012-11-08T07:31:29.307 回答