Как клонировать или загрузить определенную ветку с 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