Сделайте существующую ветку Git отслеживать удалённую ветку

git branch git-branch


Я знаю, как создать новую ветку, которая отслеживает удаленные ветви, но как сделать так, чтобы существующая ветка отслеживала удаленную ветку?

Я знаю, что могу просто отредактировать файл .git/config , но, похоже, должен быть более простой способ.




Answer 1 Dan Moulding


Учитывая ветку foo и удаленный upstream :

Начиная с Git 1.8.0:

git branch -u upstream/foo

Или, если локальная ветка foo не является текущей веткой:

git branch -u upstream/foo foo

Или,если вы хотите набрать более длинные команды,они эквивалентны двум вышеуказанным:

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

Начиная с Git 1.7.0:

git branch --set-upstream foo upstream/foo

Notes:

  • Все вышеперечисленные команды заставят локальную ветку foo отслеживать удаленную ветку foo из удаленного upstream .
  • Синтаксис старого (1.7.x)устарел в пользу нового (1.8+)синтаксиса.Новый синтаксис должен быть более интуитивным и легким для запоминания.
  • Определение восходящей ветви не удастся при запуске с вновь созданными удаленными, которые еще не были выбраны. В этом случае, запустите git fetch upstream заранее.

Смотрите также: Зачем мне все время делать `--set-upstream`?




Answer 2 Paul Hedderly


Вы можете сделать следующее (предполагая,что вы зарегистрированы на ведущем устройстве и хотите перейти к удаленному ведущему устройству филиала):

Настройте "пульт",если у вас его еще нет.

git remote add origin ssh://...

Теперь настройте мастера,чтобы он знал,что нужно отслеживать:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

И тужься:

git push origin master



Answer 3 Greg Bacon


Я делаю это как побочный эффект нажатия с опцией -u , как в

$ git push -u origin branch-name

Эквивалентный длинный параметр --set-upstream .

Команда git-branch также понимает --set-upstream , но ее использование может привести к путанице. Версия 1.8.0 изменяет интерфейс.

git branch --set-upstream устарела и может быть удалена в относительно отдаленном будущем. git branch [-u|--set-upstream-to] была введена с более разумным порядком аргументов.

Было соблазнительно сказать, что git branch --set-upstream origin/master , но это говорит Git организовать локальную ветку "origin / master" для интеграции с извлеченной в настоящий момент веткой, что весьма маловероятно для того, что имел в виду пользователь. Опция устарела; используйте --set-upstream-to этого новую опцию --set-upstream-to (с коротким-и-сладким -u ).

Допустим, у вас есть локальная ветка foo , и вы хотите, чтобы она относилась к ветке с тем же именем, что и ее восходящая ветка. Сделать это с

$ git branch foo
$ git branch --set-upstream-to=origin/foo

или просто

$ git branch --set-upstream-to=origin/foo foo



Answer 4 Hedgehog


Вообще-то,для принятого ответа на вопрос работает:

git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa



Answer 5 James Mead


Вам может git_remote_branch инструмент git_remote_branch . Он предлагает простые команды для создания, публикации, удаления, отслеживания и переименования удаленных веток. Приятной особенностью является то, что вы можете попросить команду grb объяснить, какие команды git она будет выполнять.

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch