Как клонировать все удаленные ветки в Git?

Ваша ошибка просто означает, что vcvarsall.bat не находится в папке, указанной в переменной среды PATH. Вы можете исправить это двумя способами.

В моем случае (и по умолчанию), vcvarsall.bat находится в следующий каталог:

C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat

EDIT: для Visual Studio 2017 местоположение изменилось. Теперь он находится на:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat

3912
задан Md. Abu Nafee Ibna Zahid 15 December 2017 в 14:52
поделиться

8 ответов

Во-первых, клонируйте удаленное Мерзавец репозиторий и cd в него:

$ git clone git://example.com/myproject
$ cd myproject

Затем, смотрят на локальные ответвления в Вашем репозитории:

$ git branch
* master

, Но существуют другие ответвления, скрывающиеся в Вашем репозитории! Вы видите, что они используют эти -a флаг:

$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental

, Если Вы просто хотите взять быстрый быстрый взгляд на восходящее ответвление, можно проверить его непосредственно:

$ git checkout origin/experimental

, Но если Вы хотите работать над тем ответвлением, необходимо будет создать локальное ответвление отслеживания, которое сделано автоматически:

$ git checkout experimental

и Вы будете видеть

Branch experimental set up to track remote branch experimental from origin.
Switched to a new branch 'experimental'

, Что последняя строка бросает некоторых людей: "Новое ответвление" - ха? То, что это действительно означает, - то, что ответвление взято от индекса и создано локально для Вас. предыдущий строка на самом деле более информативна, поскольку она говорит Вам, что ответвление настраивается для отслеживания удаленного ответвления, которое обычно означает ответвление origin/branch_name

Теперь, если Вы смотрите на свои локальные ответвления, это - то, что Вы будете видеть:

$ git branch
* experimental
  master

можно на самом деле отследить больше чем один удаленный репозиторий с помощью [1 110].

$ git remote add win32 git://example.com/users/joe/myproject-win32-port
$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental
  remotes/win32/master
  remotes/win32/new-widgets

На данном этапе вещи становятся довольно сумасшедшими, таким образом, работает gitk для наблюдения то, что продолжается:

$ gitk --all &
4336
ответ дан sebastian-c 15 December 2017 в 14:52
поделиться

git clone, как предполагается, копирует весь репозиторий. Попытайтесь клонировать его, и затем работайте git branch -a. Это должно перечислить все ответвления. Если тогда Вы хотите переключить на ответвление "нечто" вместо "ведущего устройства", используйте git checkout foo.

22
ответ дан MattoxBeckman 15 December 2017 в 14:52
поделиться

Выборка, которую Вы делаете, должна получить все удаленные ответвления, но она не создаст локальные ответвления для них. При использовании gitk необходимо видеть удаленные ответвления, описанные как "remotes/origin/dev" или что-то подобное.

Для создания локального ответвления на основе удаленного ответвления сделайте что-то как:

git checkout -b dev refs/remotes/origin/dev

, Который должен возвратить что-то как:

Branch dev set up to track remote branch refs/remotes/origin/dev.
Switched to a new branch "dev"

Теперь, когда Вы будете на ответвлении dev, "получение по запросу мерзавца" обновит Ваш локальный dev к той же точке как удаленное ответвление dev. Обратите внимание, что это выберет все ответвления, но только вытягивать то, которое Вы идете к верхушке дерева.

79
ответ дан Luuk Paulussen 15 December 2017 в 14:52
поделиться

Когда Вы делаете "клон мерзавца git://местоположение", все ответвления и теги выбираются.

для работы сверх определенного удаленного ответвления, предполагая, что это - удаленный источник:

git checkout -b branch origin/branchname
57
ответ дан elmarco 15 December 2017 в 14:52
поделиться

Используйте мой инструмент git_remote_branch (Вам нужен Ruby, установленный на Вашей машине). Это создается конкретно для создания удаленных манипуляций ответвлением очень легкими.

Каждый раз, когда это делает операцию от Вашего имени, это печатает его в красном в консоли. Со временем они наконец вонзаются в Ваш мозг:-)

, Если Вы не хотите grb к командам выполнения от Вашего имени, просто используйте 'объяснить' функцию. Команды будут распечатаны к Вашей консоли вместо выполняемого для Вас.

Наконец, все команды имеют псевдонимы, для создания запоминания легче.

Примечание, что это альфа-версия программного обеспечения ;-)

Вот справка при выполнении справки grb:

git_remote_branch version 0.2.6

  Usage:

  grb create branch_name [origin_server] 

  grb publish branch_name [origin_server] 

  grb rename branch_name [origin_server] 

  grb delete branch_name [origin_server] 

  grb track branch_name [origin_server] 



  Notes:
  - If origin_server is not specified, the name 'origin' is assumed 
    (git's default)
  - The rename functionality renames the current branch

  The explain meta-command: you can also prepend any command with the 
keyword 'explain'. Instead of executing the command, git_remote_branch 
will simply output the list of commands you need to run to accomplish 
that goal.

  Example: 
    grb explain create
    grb explain create my_branch github

  All commands also have aliases:
  create: create, new
  delete: delete, destroy, kill, remove, rm
  publish: publish, remotize
  rename: rename, rn, mv, move
  track: track, follow, grab, fetch
19
ответ дан webmat 15 December 2017 в 14:52
поделиться
  • 1
    Я попробовал этот подход, но проблема состоит в том, что я должен получить доступ к текущему значению zoomlevel, в то время как анимация изменения масштаба, работал, который не доступен. – David 12 November 2010 в 16:45

Используйте это: https://github.com/marceloviana/allBranches

С единственной командой, загрузите все ответвления.

Синтаксис:

~$ allBranches /var/www/meuprojeto1/
-1
ответ дан Mayur Shah 4 October 2019 в 07:00
поделиться

ОБНОВЛЕНИЕ:

принятый ответ git branch -a только [1 158] шоу удаленные ответвления.

Попытка к checkout любое из тех ответвлений или перестанет работать, если у Вас больше не будет возможности соединения в удаленный репозиторий или в лучшем случае Вы будете в 'отдельном ГЛАВНОМ' состоянии.

заголовок вопроса подразумевает локальная копия каждого удаленный ответвление в Вашем клоне. Другими словами - мы хотим clone содержать ВСЕ ответвления, доступные от [1 132] clone самостоятельно, не имея необходимость соединять и загружать с remote/origin сервер -" автономный клон с [1 160] все удаленные ответвления".


TL; Gabe Kopley DR

предложение с помощью git pull --all достигает этого.

, Другими словами, выполненный: git clone http://user@repo.url ; git pull --all


действительно легко помнить git pull --all, который ДЕЛАЕТ выпадающий все данные ответвления в Ваш clone, готовый к Вам к контролю к Вашему локальному репозиторию. С этой командой, Вам не нужен доступ к сети к remote/origin сервер больше к контролю удаленные ответвления ,

ПРИМЕЧАНИЕ: remote/origin branches не будет иметь никаких обновлений отраженными в них, если у Вас больше не будет доступа к remote/origin сервер. Их изменения только отразятся с даты и времени, Вы выполнили свою начальную букву git clone http://user@repo.url ; git pull --all команды.


Кроме того, git pull --all не будет контроль или создавать локальное ответвление из каждого удаленного ответвления для Вас. Для этого используйте одну из моих команд ниже или вручную работайте git checkout remote/origin/<branchname> (даже если у Вас нет доступа к remote/origin сервер еще). Используйте git branch -a для раскрытия удаленных ответвлений, сохраненных в Вашем clone репозиторий.

--- Конец ОБНОВЛЕНИЯ

ИСХОДНЫЙ ОТВЕТ:

Это должно добиться цели:

$ for i in $(git branch -a |grep 'remotes' | awk -F/ '{print $3}' \ 
| grep -v 'HEAD ->');do git checkout -b $i --track origin/$i;done

ИЛИ

, Если Ваш repo вложил ответвления тогда, эта команда примет это во внимание:

for i in $(git branch -a |grep 'remotes' |grep -v 'HEAD ->');do \
basename ${i##\./} | xargs -I {} git checkout -b {} --track origin/{}; done


вышеупомянутые команды будут checkout локальное ответвление в Ваш локальный репозиторий, названный тем же как remote/origin/<branchname> и устанавливать его на [1 123] изменения от удаленного ответвления по remote/origin сервер, когда Вы выполните git pull команда против Вашего локальный репозиторий.

0
ответ дан Tony Barganski 4 October 2019 в 07:00
поделиться

Что касается,

$ git checkout - b экспериментальное происхождение / экспериментальное

с использованием

$ git checkout -t origin/experimental

или более подробное, но более легкое для запоминания

$ git checkout --track origin/experimental

может быть лучше с точки зрения отслеживания удаленного репозитория.

97
ответ дан 17 December 2019 в 16:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: