Перейти к содержимому

Как клонировать определенную ветку git

  • автор:

Как клонировать или загрузить определенную ветку с Github

Github отлично подходит для хранения файлов, но иногда нужные вам файлы хранятся в другой ветке Git, и к ним нелегко получить доступ с основного сайта. Мы покажем, как загружать и клонировать файлы из других веток.

«Скачать ZIP» будет работать

Github не совсем ясно описывает поведение своей функции загрузки. Если вы переключитесь на другую ветку с помощью раскрывающегося списка, вы продолжите просмотр этой ветки, по крайней мере, до тех пор, пока не перейдете из средства просмотра файлов.

Находясь в ветке, нажав «Загрузить Zip» в раскрывающемся списке «Код», вы перейдете к загрузке для конкретной ветки, в которой вы находитесь. Однако на сайте об этом не сообщается, поэтому вам нужно убедиться, что имя файла для URL-адреса загрузки соответствует правильной ветке, названной в формате reponame-branchname.zip .

То же самое касается прямых загрузок через кнопку «Raw» — они будут ссылаться на определенную ветку, которую вы можете изменить в URL-адресе.

https://raw.githubusercontent.com/username/Repo/Branch/readme.md

Клонирование отдельной ветки (правильный способ)

Однако загрузка в виде zip имеет много недостатков и ломает историю Git. Вы захотите клонировать ветку с помощью команды git clone .

Возможно, вы попробовали это только для того, чтобы случайно загрузить ветку master . Это связано с тем, что даже если вы переключитесь на ветку на веб-сайте, Github предоставит вам только URL для загрузки репозитория. В нем не указано как скачать его.

https://github.com/username/Repo.git

Если вы возьмете этот URL-адрес и запустите git clone , он загрузит ветку по умолчанию, обычно master . Вы можете изменить это с помощью некоторых флагов, обычно это делается одним из двух способов:

git clone --branch dev https://github.com/username/Repo.git git clone --branch dev --single-branch https://github.com/username/Repo.git

Первый клонирует весь репозиторий и извлекает ветку dev . Второй, с использованием флага —single-branch , будет получать только обновления, относящиеся к загружаемой ветке. Это может быть быстрее, если у вас есть много файлов в других ветках, которые вам не нужны.

Исправление репозитория, загруженного из главной ветки

Если вы читаете это, потому что уже запускали git clone без флага —branch , не волнуйтесь, вы можете просто переключиться на другую ветку:

git switch dev

Если вы внесли изменения в ветку master не осознавая этого, вы можете перенести эти изменения в новую ветку, используя git checkout вместо -b флаг:

git checkout -b

Вы также можете использовать git stash , который позволяет сохранять изменения и открывать тайник позже:

git stash git switch dev git stash pop

Как клонировать нужную ветку?

Этот вариант склонирует ПОЛНОСТЬЮ весь репозиторий и просто переключится на ветку branch-name:

git clone http://whatever.git -b branch-name 

Иногда нужно склонировать ТОЛЬКО конкретную ветку, тогда:

git clone --branch=branch-name http://whatever.git 

Еще иногда может потребоваться склонировать репозиторий без многолетней истории его коммитов, тогда нужно использовать параметр —depth=5, где 5 — количество коммитов от последнего:

git clone --depth=1 --branch=branch-name http://whatever.git 

A3.2 Приложение C: Команды Git — Клонирование и создание репозиториев

Существует два способа создать Git репозиторий. Первый — клонировать его из существующего репозитория (например, по сети); второй — создать репозиторий в существующем каталоге.

git init

Чтобы превратить обычный каталог в Git репозиторий и начать версионировать файлы в нём, просто запустите git init .

Впервые мы продемонстрировали эту команду в разделе Создание Git-репозитория главы 2 на примере создания нового репозитория для последующей работы с ним.

Мы немного поговорили о смене названия ветки по умолчанию с «master» на что-нибудь другое в разделе Удалённые ветки главы 3.

Мы использовали эту команду для создания чистого репозитория для работы на стороне сервера в разделе Размещение голого репозитория на сервере главы 4.

Ну и наконец мы немного покопались во внутренностях этой команды в разделе Сантехника и Фарфор главы 10.

git clone

На самом деле git clone работает как обёртка над некоторыми другими командами. Она создаёт новый каталог, переходит внутрь и выполняет git init для создания пустого репозитория, затем она добавляет новый удалённый репозиторий ( git remote add ) для указанного URL (по умолчанию он получит имя origin ), выполняет git fetch для этого репозитория и, наконец, извлекает последний коммит в ваш рабочий каталог, используя git checkout .

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

Первоначальное знакомство происходит в разделе Клонирование существующего репозитория главы 2, где мы даём немного объяснений и приводим несколько примеров.

В разделе Установка Git на сервер главы 4 мы рассмотрели как использовать опцию —bare , чтобы создать копию Git репозитория без рабочей копии.

В разделе Создание пакетов главы 7 мы использовали git clone для распаковки упакованного с помощью git bundle репозитория.

Наконец, в разделе Клонирование проекта с подмодулями главы 7 мы научились использовать опцию —recursive чтобы упростить клонирование репозитория с подмодулями.

И хотя git clone используется во многих других местах в книге, перечисленные выше так или иначе отличаются от других вариантов использования.

GitHub: как клонировать конкретную ветку

Компьютерный журнал айтишника

Если вы только начинаете работать с ГитХабом и используете веб-интерфейс или GitHub Desktop — сделать даже такую простую вещь, как клонировать конкретную ветку репозитория может быть довольно челленжево. Сделать это можно при помощи Git Bash:

git clone git://github.com//.git cd git checkout /

Запись опубликована в рубрике Git. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *