Клонирование репозиториев Git с определенной глубиной

Когда вы используете команду «git clone» в Git, она создает копию удаленного репозитория на вашем локальном компьютере. По умолчанию клонируется вся история репозитория, включая все ветки и теги. Однако вы можете использовать опцию «глубина», чтобы клонировать только определенное количество последних коммитов, что может быть полезно, если вам не нужна полная история и вы хотите сэкономить время и дисковое пространство.

Вот несколько методов, которые можно использовать для клонирования репозитория Git определенной глубины, а также примеры кода:

Метод 1: использование параметра «–length» с «git clone»:

git clone --depth <depth> <repository_url>

Замените количеством недавних коммитов, которые вы хотите клонировать, и URL-адресом репозитория, который вы хотите клонировать.

Пример:

git clone --depth 1 https://github.com/example/repository.git

Это клонирует самый последний коммит репозитория.

Метод 2: клонирование и последующее использование «git pull» для усечения истории:

git clone <repository_url>
cd <repository_directory>
git pull --depth=<depth>

После клонирования репозитория перейдите в клонированный каталог и используйте команду «git pull» с параметром «–length», чтобы обрезать историю до нужной глубины.

Пример:

git clone https://github.com/example/repository.git
cd repository
git pull --depth=3

При этом будет клонирован весь репозиторий, а затем история будет сокращена до трех последних коммитов.

Метод 3. Клонирование поверхностной копии и преобразование ее в полную копию:

git clone --depth <depth> <repository_url>
cd <repository_directory>
git fetch --unshallow

При использовании этого метода вы сначала клонируете репозиторий на небольшую глубину, а затем преобразуете его в полную копию, извлекая оставшуюся историю.

Пример:

git clone --depth 5 https://github.com/example/repository.git
cd repository
git fetch --unshallow

При этом сначала будут клонированы пять последних коммитов, а затем будет получена полная история.

Метод 4. Использование параметра «git clone –filter» (Git 2.19+):

git clone --filter=tree:0 --depth <depth> <repository_url>

Этот метод использует команду «git clone» с опцией «–filter» для указания частичного клонирования, ограничивая клонирование только последним коммитом.

Пример:

git clone --filter=tree:0 --depth 1 https://github.com/example/repository.git

При этом будет клонирован только последний коммит.