Я хотел бы получить одну ветку (не все) удаленного репозитория и создать локальную ветвь отслеживания, которая может отслеживать дальнейшие обновления этой удаленной ветки. Другие ветки в удаленном репозитории очень большие, поэтому я бы не хотел их извлекать. Как мне это сделать?
Изменить: Я сам понял это, но StackOverflow отказывается позволить мне предоставить ответ в качестве ответа, поэтому вместо этого я поставлю его здесь в вопросе.
Вы используете опцию -t для удаленного добавления git, например:
git remote add -t remote-branch remote-name remote-url
Вы можете использовать несколько -t branch
вариантов " ", чтобы получить несколько веток.
Ответы:
Работал на меня.
источник
FETCH_HEAD
после извлечения. Спасибо!git checkout FETCH_HEAD
к оформлениюremote_name
естьorigin
. Например:git fetch origin <branch_name>
Одним из способов является следующее:
Это не настроить отслеживание, хотя.
Для получения дополнительной информации см. Документацию git fetch .
РЕДАКТИРОВАТЬ : Как @ user1338062 отмечает ниже : если у вас еще нет локального клона репозитория, в который вы хотите добавить новую ветвь, но вы хотите создать свежий локальный репозиторий, то решение
git clone --branch <branch_name> --single-branch <repo_url>
будет более коротким.источник
git checkout <branchname>
, я вижу, что git автоматически устанавливает ветку отслеживания, если единственной веткой с таким именем является удаленная ветка.git clone
Сейчас поддерживаются--branch
и--single-branch
варианты, я выложил ответ с демонстрацией .Я знаю, что ответов уже много, но эти шаги помогли мне:
git fetch <remote_name> <branch_name>
git branch <branch_name> FETCH_HEAD
git checkout <branch_name>
Они основаны на ответе @Abdulsattar Mohammed, комментарии @Christoph к этому ответу, а также на других вопросах о переполнении стека и их ответах:
источник
Чтобы обновить существующий пульт для отслеживания определенных веток, используйте только:
От
git help remote
:источник
--single-branch
репозитории и не смог загрузить дополнительные ветки позже. Спасибо!Один из способов сделать это:
в .git / config fetch для удаленного репозитория должен быть установлен выборки для любой ветви:
чтобы получить удаленную ветку:
создать локальную ветку 'branch-name', настроенную для отслеживания удаленной ветки 'branch-name' от источника.
перечислить все филиалы
источник
Скопировано с поста автора:
Используйте
-t
опциюgit remote add
, например:Вы можете использовать несколько
-t branch
вариантов, чтобы захватить несколько ветвей.источник
Если вы хотите изменить значения по умолчанию для «git pull» и «git fetch», чтобы получать только определенные ветви, вы можете отредактировать .git / config так, чтобы удаленная конфигурация выглядела так:
По умолчанию это только выборка мастера из источника. См. Для получения дополнительной информации: https://git-scm.com/book/en/v2/Git-Internals-The-Refspec
РЕДАКТИРОВАТЬ: Просто понял, что это то же самое, что опция -t делает для Git Remote Add. По крайней мере, это хороший способ сделать это после добавления пульта, если вы не хотите удалять пульт и добавлять его снова, используя -t.
источник
Для полноты, вот пример команды для новой проверки:
Как уже упоминалось в других ответах, он устанавливается
remote.origin.fetch
так:источник
версия git: 2.74
Вот как я это делаю:
источник
git версия 2.16.1.windows.4
Достаточно просто выполнить git fetch remoteRepositoryName branchName
(eg: git fetch origin my_local_branch)
. Выборка будет выполнена, и будет создана новая локальная ветвь с тем же именем, и отслеживание будет установлено как удаленная ветвь.Затем выполните git checkout branchName
источник
git branch
пока вы неМои обходные пути:
если у вас нет локального клона:
источник
<remote_name>
вы хотите использовать (не стесняйтесь использоватьorigin
и пропустите шаг 1.)git remote add <remote_name> <remote_url>
git fetch <remote_name> <branch>
<your_local_branch_name>
вы хотели бы использовать. Может быть так же, как<branch>
.git checkout <remote_name>/<branch> -b <your_local_branch_name>
Надеюсь, это поможет!
источник
Ответ на самом деле зависит от текущего списка отслеживания веток у вас есть. Вы можете выбрать конкретную ветку с удаленного компьютера,
git fetch <remote_name> <branch_name>
только если ветвь уже есть в списке ветвей отслеживания (вы можете проверить это с помощьюgit branch -r
).Давайте предположим, что я ранее клонировал пульт с параметром --single-branch, и в этом случае единственная отслеживаемая ветвь, которую я имею, это "клонированная" ветвь. Я немного сбит с толку советами настроить git config вручную, а также вводить
git remote add <remote_name> <remote_url>
команды. Поскольку «git remote add» устанавливает новый пульт, он явно не работает с существующим удаленным репозиторием; Поставка опций "-t branch" мне не помогла.В случае, если удаленный существует, и ветка, которую вы хотите получить, существует в этом удаленном:
Проверьте
git branch -r
, можете ли вы видеть эту ветку как отслеживающую ветку. Если нет (как в моем случае с одним клоном ветки), добавьте эту ветку в список веток отслеживания с помощью «git remote set-branch» с параметром --add:git remote set-branches --add <remote_name> <branch_name>
Теперь вы можете получить определенную ветку (продублируйте здесь другие ответы):
git fetch <remote_name> <branch_name>
И создайте и извлеките новую локальную ветку с помощью «checkout --track», которому будет присвоено то же «branch_name», что и для отслеживающей ветви:
git checkout --track <remote_name>/<branch_name>
источник
Самый простой способ сделать это
Пример: я хочу получить ветку uat из источника и переключиться на нее как текущую рабочую ветку.
источник