我有一台本地计算机,在该计算机上有相同GIT存储库的多个副本,每个副本供不同的用户使用。所以它可能看起来像这样:
/home/userA/BigRepository
/home/userB/BigRepository
/home/userC/BigRepository
/home/userD/BigRepository
/home/userE/BigRepository
假设每个存储库使用〜2-3GB,20个用户将使用40-60GB的不必要的冗余数据。用户可以在其私有分支上开发某些内容,但是大多数数据仍然是冗余的。这就是为什么我想优化磁盘使用率。
我想知道什么是最好的方法。
我已经检查过的内容:
git clone --local
-每个存储库将与裸存储库共享.git /对象,但这意味着.bare存储库必须在本地可用(因此它不能是GitHub,对吗?)git clone --depth <n>
-这将减少存储库的大小,但也将本地历史记录减少到n个对象。git clone --shallow-since
-据我了解,它将与--depth
选项类似,但是将自指定时间起保存提交。git clone --separate-dir
-我自己的主意,使用同一位置存储所有.git目录。 (因此,进行克隆时,20个存储库中的每一个都将链接到同一位置。不知道是否有可能,只是分享我的想法。--depth
表示存储库最多具有n次提交,还是仅在克隆时才进行检查,然后该存储库会随着时间增长?
您可以尝试将.git
目录从一个位置符号链接到所有其他工作空间
git clone git@server:BigRepository /home/userA/BigRepository
mkdir /home/userB/BigRepository/
ln -s /home/userA/BigRepository/.git /home/userB/BigRepository/.git
但是,每个人都将更改其他人的分支,即您的master
分支可能会意外移动。您的工作区将不会更改,因此您的文件将按预期方式运行。但是Git会突然报告更改。