Зачем мне все время выполнять `--set-upstream-to`? - PullRequest
0 голосов
/ 05 октября 2018

Мне обычно приходится клонировать удаленные ветки, которых у меня нет в моем git-репо (например, от коллег)

Хотя есть простая настройка для git push (см. Зачем мне нужноделать `--set-upstream` все время? ) Я не нашел того же, что верно для git pull.

Сейчас мой рабочий процесс:

  • о, мне нужно вытащить branch123 из projectABC из github
  • cd projectABC && git checkout -b branch123
  • git pull

Увы, меня встречают:

Нет информации об отслеживании текущей ветви.Пожалуйста, укажите, с какой ветвью вы хотите объединиться.Подробности смотрите в git-pull (1).

git pull <remote> <branch>

Если вы хотите установить информацию об отслеживании для этой ветви, вы можете сделать это с помощью:

git branch --set-upstream-to=origin/<branch> branch123

Как я могусделать это проще?

Ответы [ 4 ]

0 голосов
/ 05 октября 2018

Как правило, вы делаете:

git branch -u %remotename%/%branchname%

Замените% remotename% на ваше удаленное имя, которое вы установили, что в основном называется «происхождение».Замените% branchname% на имя удаленной ветви.

0 голосов
/ 05 октября 2018

Когда вы используете флаг -b для оформления заказа, вы фактически создаете новую локальную ветку, не связанную с какой-либо удаленной веткой.При первом нажатии на новую ветку вы можете связать ее с новой удаленной веткой, выполнив git push -u.Если вы проверяете существующую ветку, просто отбросьте -b.

0 голосов
/ 05 октября 2018

Если вы проверяете ветку, которая существует только как origin/branchName (поэтому git branch -l не перечисляет branchName без origin), например, так:

git checkout branchName

Вы создадитеновая локальная ветка, которая автоматически отслеживает origin/branchName.Git также должен проинформировать вас об этом:

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

Когда вы используете флаг -b, вам также необходимо добавить флаг -t, чтобы настроить отслеживание за один раз:

git checkout -b branchName -t origin/branchName

Эта команда действительно полезна, только если вы хотите, чтобы ваша локальная ветвь имела имя, отличное от имени в origin.В простом случае просто пропустите -b.

В качестве альтернативы, вы можете использовать аргумент -u, как упоминалось в ответе @ Тобба при первом нажатии.Это, по сути, делает то же самое автоматическое отображение на ветку пульта с тем же именем, что и простой git checkout.

0 голосов
/ 05 октября 2018

Вот что я придумал:

  • о, мне нужно вытащить branch123 из projectABC из github
  • cd projectABC && git checkout -b branch123
  • git track <= это интересный бит </li>
  • git pull

со следующим псевдонимом в моем .gitconfig

  track = "!f(){ branch=$(git name-rev --name-only HEAD); cmd=\"git branch --set-upstream-to ${1:-origin}/${2:-$branch} $branch\"; $cmd; }; f"

Кредит: https://andre.arko.net/2012/05/29/track-remote-git-branches-with-ease/

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