我有我的Git存储库,它在根目录下有两个子目录:
/finisht
/static
Run Code Online (Sandbox Code Playgroud)
当这是在SVN,/finisht在一个地方签出,而/static在其他地方查出来,像这样:
svn co svn+ssh://admin@domain.com/home/admin/repos/finisht/static static
Run Code Online (Sandbox Code Playgroud)
有没有办法用Git做到这一点?
阅读文档后,我还没有真正理解的差异之间有什么--shared和--reference <repo>.他们看起来很相似.
这些 --shared 和
选项有什么区别--reference <repo> ?
在制作另一个本地克隆的多个本地克隆时,它们可以用来节省驱动器空间吗?
每个本地克隆都可以签出不同的分支吗?
注意:我知道我可以使用带有截断历史的多个浅克隆git clone --depth <depth>,但是为了做到这一点,每个克隆仍然必须复制至少一些历史记录,所以我想这可能不是最佳的保存方式驱动空间(虽然它总比没有好).
有时我喜欢在存储库中有多个工作副本的签出,因此我创建了多个克隆,其中每个克隆都有自己的签出.
但是,我并不需要每个克隆的整个历史记录,只需要最新版本的分支,因此我可以通过让每个克隆使用标记,提交,树,来节省大量的驱动器空间,原始本地克隆中的blob和blob对象(例如,通过符号链接).
git clone 文件我检查了git clone文档,看看有什么我可以使用的.
--shared我看到有一个--shared选项:
当要克隆的存储库位于本地计算机上而不是使用硬链接时,会自动设置
.git/objects/info/alternates为与源存储库共享对象.生成的存储库在没有任何自己的对象的情况下开始.
这看起来可能有助于我使用具有不同签出的多个克隆来节省驱动器空间,因为每个克隆与原始本地克隆共享对象.
--reference <repository>然后我也看到了--reference <repository>选项:
如果引用存储库位于本地计算机上,则自动设置
.git/objects/info/alternates以从引用存储库获取对象.使用现有存储库作为备用存储库将需要从克隆的存储库中复制更少的对象,从而降低网络和本地存储成本.注意:请参阅该
--shared选项的注意事项.
这说明它会降低本地存储成本,因此这也可能有用.
有没有办法硬链接包含多个Git存储库的文件夹中的所有重复对象?
说明:
我在我的公司服务器(Linux机器)上托管一个Git服务器.我们的想法是拥有一个主要的规范存储库,每个用户都没有对其进行推送访问,但是每个用户都会分配规范存储库(将规范克隆到用户的主目录,从而实际创建硬链接).
/ canonical/Repo/Dev1/Repo(最初克隆时与/ canonical/Repo硬连接的对象)/ Dev2/Repo(最初克隆时硬链接到/ canonical/Repo的对象)
一切正常.问题出现在:
Dev1:将巨大的提交推送到服务器上的fork(/ Dev1/Repo)Dev2:在他的本地系统上获取,进行自己的更改并将其推送到自己的服务器上的fork(/ Dev2/Repo)
(现在,相同的'巨大'文件驻留在服务器上的开发人员的叉子上.它不会自动创建硬链接.)
这就像疯了一样吃掉了我的服务器空间!
如何在两个叉子之间重复的对象之间创建硬链接或者规范,以便保存服务器空间,并且每个开发人员从他/她的本地机器上的叉子克隆时获取所有数据?
git ×3
duplicates ×1
git-clone ×1
git-fork ×1
hardlink ×1
linux ×1
repository ×1
subdirectory ×1