Как мне получить только одну ветку удаленного Git-репозитория? - PullRequest
200 голосов
/ 16 июня 2011

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

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

Вы используете опцию -t для git remote add, например ::

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

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

Ответы [ 11 ]

173 голосов
/ 06 января 2015
git fetch <remote_name> <branch_name>

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

61 голосов
/ 16 июня 2011

Один из способов заключается в следующем:

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

Хотя это не настраивает отслеживание.

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

РЕДАКТИРОВАТЬ : как @ user1338062 примечания ниже : если у вас еще нет локального клона репозитория, в который вы хотите добавить новую ветку, но вы хотитечтобы создать свежий локальный репозиторий, git clone --branch <branch_name> --single-branch <repo_url> предлагает более короткое решение.

21 голосов
/ 09 октября 2014

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

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.
17 голосов
/ 12 июня 2016

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

в .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
15 голосов
/ 15 мая 2013

Скопировано из поста автора:

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

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

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

14 голосов
/ 14 августа 2018

Я знаю, что ответов уже много, но эти шаги сработали для меня:

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

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

10 голосов
/ 06 января 2012

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

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

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

РЕДАКТИРОВАТЬ: Просто понял, что это то же самое, что -Опция t для git remote add.По крайней мере, это хороший способ сделать это после добавления пульта, если вы не хотите удалять пульт и добавлять его снова, используя -t.

8 голосов
/ 02 июня 2015

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

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
5 голосов
/ 26 сентября 2016

GIT версия: 2,74

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

git remote add [REMOTE-NAME] [REMOTE-URL]
git fetch [REMOTE-NAME] -- [BRANCH]
1 голос
/ 11 января 2018
  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>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...