Ответ 1
git fetch <remote_name> <branch_name>
Работал для меня.
Я хотел бы получить отдельную ветку (не все из них) удаленного репозитория и создать локальную ветку отслеживания, которая может отслеживать дальнейшие обновления этой удаленной ветки. Другие ветки в удаленном репозитории очень большие, поэтому я бы хотел избежать их получения. Как это сделать?
Изменить: я сам это понял, но StackOverflow отказывается дать мне ответ в качестве ответа, поэтому я поставлю его здесь в вопросе.
Вы используете параметр -t для git удаленного добавления, например:
git remote add -t remote-branch remote-name remote-url
Вы можете использовать несколько опций "-t branch
" для захвата нескольких ветвей.
git fetch <remote_name> <branch_name>
Работал для меня.
Один из способов:
git fetch <remotename> <remote branch>:refs/remotes/<remotename>/<local branch>
Это не настраивает отслеживание.
Для получения дополнительной информации см. документацию git fetch.
EDIT: как @user1338062 примечания ниже: если у вас еще нет локального клона репозитория, в который вы хотите добавить новая ветка, но вы хотите создать новый локальный репозиторий, тогда git clone --branch <branch_name> --single-branch <repo_url>
предоставляет более короткое решение.
Чтобы обновить существующий пульт для отслеживания определенных ветвей, используйте только:
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.
Один из способов сделать это:
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
Я знаю, что ответов уже много, но эти шаги помогли мне:
git fetch <remote_name> <branch_name>
git branch <branch_name> FETCH_HEAD
git checkout <branch_name>
Они основаны на ответе @Abdulsattar Mohammed, комментарии @Christoph к этому ответу, а также на других вопросах о переполнении стека и их ответах:
Скопировано из сообщения автора:
Используйте параметр -t
для git remote add
, например:
git remote add -t remote-branch remote-name remote-url
Вы можете использовать несколько опций -t branch
для захвата нескольких ветвей.
Если вы хотите изменить значения по умолчанию для "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.
Для полноты, вот пример команды для новой проверки:
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
git версия: 2.74
Вот как я это делаю:
git remote add [REMOTE-NAME] [REMOTE-URL]
git fetch [REMOTE-NAME] -- [BRANCH]
git версия 2.16.1.windows.4
Достаточно просто выполнить git fetch remoteRepositoryName branchName (eg: git fetch origin my_local_branch)
. Выборка будет завершена, и будет создана новая локальная ветвь с тем же именем, а для отслеживания будет установлена удаленная ветвь.
Затем выполните git checkout branchName
Мое обходные пути:
git fetch --depth=1
git checkout <branch_name>
если у вас нет локального клона:
git clone --depth 1 -b <branch_name> <repo_url>
<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:
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