Как мне получить только одну ветку удаленного Git-репозитория?

Я хотел бы получить отдельную ветку (не все из них) удаленного репозитория и создать локальную ветку отслеживания, которая может отслеживать дальнейшие обновления этой удаленной ветки. Другие ветки в удаленном репозитории очень большие, поэтому я бы хотел избежать их получения. Как это сделать?

Изменить: я сам это понял, но StackOverflow отказывается дать мне ответ в качестве ответа, поэтому я поставлю его здесь в вопросе.

Вы используете параметр -t для git удаленного добавления, например:

git remote add -t remote-branch remote-name remote-url

Вы можете использовать несколько опций "-t branch" для захвата нескольких ветвей.

Ответ 1

git fetch <remote_name> <branch_name>

Работал для меня.

Ответ 2

Один из способов:

git fetch <remotename> <remote branch>:refs/remotes/<remotename>/<local branch>

Это не настраивает отслеживание.

Для получения дополнительной информации см. документацию git fetch.

EDIT: как @user1338062 примечания ниже: если у вас еще нет локального клона репозитория, в который вы хотите добавить новая ветка, но вы хотите создать новый локальный репозиторий, тогда git clone --branch <branch_name> --single-branch <repo_url> предоставляет более короткое решение.

Ответ 3

Чтобы обновить существующий пульт для отслеживания определенных ветвей, используйте только:

git remote set-branches <remote-name> <branch-name>

От git help remote:

set-branches
    Changes the list of branches tracked by the named remote. This can be used to track a subset of the available remote branches
    after the initial setup for a remote.

    The named branches will be interpreted as if specified with the -t option on the git remote add command line.

    With --add, instead of replacing the list of currently tracked branches, adds to that list.

Ответ 4

Один из способов сделать это:

in.git/config fetch для удаленного репо следует установить для получения любой ветки:

   [remote "origin"]
            fetch = +refs/heads/*:refs/remotes/origin/*

для получения удаленной ветки:

git fetch origin branch-name

создать локальное ветвь "имя-ветвь", настроенное для отслеживания удаленной ветки "имя-ветки" из источника.

git checkout -b branch-name origin/branch-name

для отображения всех ветвей

git branch -a

Ответ 5

Я знаю, что ответов уже много, но эти шаги помогли мне:

  1. git fetch <remote_name> <branch_name>
  2. git branch <branch_name> FETCH_HEAD
  3. git checkout <branch_name>

Они основаны на ответе @Abdulsattar Mohammed, комментарии @Christoph к этому ответу, а также на других вопросах о переполнении стека и их ответах:

Ответ 6

Скопировано из сообщения автора:

Используйте параметр -t для git remote add, например:

git remote add -t remote-branch remote-name remote-url

Вы можете использовать несколько опций -t branch для захвата нескольких ветвей.

Ответ 7

Если вы хотите изменить значения по умолчанию для "git pull" и "git fetch", чтобы получать только определенные ветки, вы можете отредактировать .git/config так, чтобы удаленная конфигурация выглядела так:

[remote "origin"]
  fetch = +refs/heads/master:refs/remotes/origin/master

По умолчанию это только выборка мастера из источника. Смотрите для получения дополнительной информации: https://git-scm.com/book/en/v2/Git-Internals-the-Refspec

ОБНОВЛЕНИЕ: Просто понял, что это то же самое, что опция -t делает для Git Remote Add. По крайней мере, это хороший способ сделать это после добавления пульта, если вы не хотите удалять пульт и добавлять его снова, используя -t.

Ответ 8

Для полноты, вот пример команды для новой проверки:

git clone --branch gh-pages --single-branch git://github.com/user/repo

Как упоминалось в других ответах, он устанавливает remote.origin.fetch следующим образом:

[remote "origin"]
        url = git://github.com/user/repo
        fetch = +refs/heads/gh-pages:refs/remotes/origin/gh-pages

Ответ 9

git версия: 2.74

Вот как я это делаю:

git remote add [REMOTE-NAME] [REMOTE-URL]
git fetch [REMOTE-NAME] -- [BRANCH]

Ответ 10

git версия 2.16.1.windows.4

Достаточно просто выполнить git fetch remoteRepositoryName branchName (eg: git fetch origin my_local_branch). Выборка будет завершена, и будет создана новая локальная ветвь с тем же именем, а для отслеживания будет установлена удаленная ветвь.

Затем выполните git checkout branchName

Ответ 11

Мое обходные пути:

git fetch --depth=1
git checkout <branch_name>

если у вас нет локального клона:

git clone --depth 1 -b <branch_name> <repo_url>

Ответ 12

  1. Выберите любой <remote_name>, который вы хотели бы использовать (не стесняйтесь использовать originи пропустите шаг 1.)
  2. git remote add <remote_name> <remote_url>
  3. git fetch <remote_name> <branch>
  4. Выберите любой <your_local_branch_name>, который вы хотели бы использовать. Может быть таким же, как <branch>.
  5. git checkout <remote_name>/<branch> -b <your_local_branch_name>

Надеюсь, это поможет!

Ответ 13

Для начального клонирования ветки git:

git clone -b "Branch-Name" "Repo-Url" "Dir-Name"

Пример:

git clone -b featureA https://gitlab.com/XXXXX/XXXX.git folderA

Здесь ветвь featureA будет клонирована в каталог folderA.

Для существующего репозитория git

git fetch -b "remote-name" "branch-name"

Пример:

git fetch -b origin featureA