git克隆。如何通过硬链接克隆本地回购?

git克隆。如何通过硬链接克隆本地回购?,git,clone,Git,Clone,我有一个本地git存储库。我想通过硬链接文件在本地计算机上克隆它以节省磁盘空间。我该怎么做呢?通过简化,Git存储库由3种文件组成: 类似数据库的对象($GIT_DIR/objects):这些对象从不修改,有些可以添加,有些可以删除,但文件从不修改。这意味着它们在许多克隆之间可以完全相同 特定于存储库的配置和状态($GIT\u DIR):这些文件包含特定于存储库的配置(例如,$GIT\u DIR/info/*)。它们还存储存储库状态,例如什么是已知分支、什么是签出分支等。它们不能在存储库之间共享

我有一个本地git存储库。我想通过硬链接文件在本地计算机上克隆它以节省磁盘空间。我该怎么做呢?

通过简化,Git存储库由3种文件组成:

  • 类似数据库的对象
    $GIT_DIR/objects
    ):这些对象从不修改,有些可以添加,有些可以删除,但文件从不修改。这意味着它们在许多克隆之间可以完全相同

  • 特定于存储库的配置和状态(
    $GIT\u DIR
    ):这些文件包含特定于存储库的配置(例如,
    $GIT\u DIR/info/*
    )。它们还存储存储库状态,例如什么是已知分支、什么是签出分支等。它们不能在存储库之间共享,否则会违反设计

  • 工作拷贝文件或源文件:这些文件在大多数情况下都是源代码,它们在不同的存储库中是不同的。它们是灵活的,变化很大(要么因为您编写了很多代码,要么因为您切换了很多分支,或者两者兼而有之)

  • 事实上,唯一不变的、不特定于存储库的文件是对象文件。如果可能的话,Git会自动硬链接它们(即使没有指定
    -l


    如果您希望同一驱动器上的两个存储库具有完全相同的状态和文件,那么您肯定应该创建一个符号链接。但是您不能硬链接配置和工作拷贝文件,因为它们更改太多并且特定于存储库。

    这不是完全否定了git的意义吗?使用硬链接,您将编辑主分支中的文件,而不是编辑克隆。您是否阅读了git help clone?这实际上是默认行为。当然我做了)但是git clone-l做“在可能的情况下,将.git/objects/目录下的文件硬链接以节省空间”。但我需要硬链接所有文件。多项式,我知道这一点。这正是我需要的。那个么你们不应该克隆,而应该创建一个repo的符号链接