Получите новую ветвь upstream с git

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

Но теперь есть новая ветка в восходящем репо, и я не могу понять, как получить эту новую ветвь локально, а затем подтолкнуть ее к моему происхождению. Вот моя ситуация.

$ git remote show origin
* remote origin
  Fetch URL: [email protected]:rackspace/jclouds.git
  Push  URL: [email protected]:rackspace/jclouds.git
  HEAD branch: master
  Remote branches:
    1.5.x                   tracked
    master                  tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

$ git remote show upstream
* remote upstream
  Fetch URL: https://github.com/jclouds/jclouds
  Push  URL: https://github.com/jclouds/jclouds
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (up to date)

Я знаю, что есть ветвь 1.6.x в jclouds/jclouds, и я хочу получить эту ветвь локально, а затем нажать ее в rackspace/jclouds. Я пробовал эту команду

$ git fetch upstream 1.6.x
From https://github.com/jclouds/jclouds
 * branch            1.6.x      -> FETCH_HEAD

И похоже, что он выбрал ветку, но я не вижу ее в git remote show или git branch -a, поэтому я не могу настроить локальную ветвь отслеживания.

Что мне не хватает?

Ответ 1

Этого должно быть достаточно

# I prefer fetching everything from upstream
git fetch upstream

# Then I track the new remote branch with a local branch
git checkout -b 1.6.x --track upstream/1.6.x
git push origin 1.6.x

Если возникают проблемы с обновлением, например:

fatal: Cannot update paths and switch to branch '1.6.x' at the same time. 
Did you intend to checkout 'upstream/1.6.x' which can not be resolved as commit?"

И если это не работает:

git checkout upstream/1.6.x -b 1.6.x

Тогда более простая версия:

# let create a new local branch first
git checkout -b 1.6.x
# then reset its starting point
git reset --hard upstream/1.6.x

То, что OP Everett Toews должно было сделать в его случае, было:

В конечном итоге мне пришлось явно добавить ветвь вверх по течению с помощью

git remote add --track 1.6.x upstream-1.6.x https://github.com/jclouds/jclouds 

а затем:

git pull upstream-1.6.x 1.6.x