Что делает «--set-upstream»?

327

Что делает Git --set-upstream?

Я попытался понять это, прочитав руководство по git , но не совсем понял .

Евгений Масленков
источник
13
Существует новая опция, --set-upstream-toкоторая была введена из-за путаницы (IIRC) в настройках.
Филип Окли

Ответы:

411
git branch --set-upstream <remote-branch>

устанавливает удаленную ветку по умолчанию для текущей локальной ветки.

Любая будущая git pullкоманда (с извлеченной текущей локальной веткой)
будет пытаться ввести коммиты из <remote-branch>текущей локальной ветки.


Один из способов избежать необходимости явного ввода --set-upstream- использовать его сокращенный флаг -uследующим образом:

git push -u origin local-branch

Это устанавливает восходящую связь для любых будущих попыток push / pull автоматически.
Для получения более подробной информации, ознакомьтесь с этим подробным объяснением о ветвях и отслеживании .


Во избежание путаницы в последних версиях gitэтот --set-upstreamвариант несколько неоднозначен, вместо более подробного --set-upstream-toварианта с идентичным синтаксисом и поведением.

git branch --set-upstream-to <origin/remote-branch>
TheCodeArtist
источник
7
Флаг --set-upstream устарел и будет удален. Рассмотрите возможность использования --track или --set-upstream-to
Rohit Singh Sengar
1
в этой команде git push -u origin local-branchчто originпредставляет? Есть ли какой-нибудь случай, когда я напечатал бы что-нибудь кроме originпосле -u?
Джон Хенкель
2
@JohnHenckel originотносится к удаленному хранилищу git, с которого клонировался. Может быть несколько удаленных репозиториев git . В таком случае originможет быть заменено надлежащим названием желаемого пульта, на который вы хотите сослаться.
TheCodeArtist
сделать, git remote -vчтобы найти ваши пульты, по умолчанию originобычно
xploreraj
39

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

Добавление удаленного отслеживания средства ветвления , что мерзавец то знает , что вы хотите делать , когда вы git fetch, git pullилиgit push в будущем. Предполагается, что вы хотите синхронизировать локальную ветвь и удаленную ветвь, которую она отслеживает, и предпринимаете соответствующие действия для достижения этой цели.

Вы можете достичь того же с помощью git branch --set-upstream-toили git checkout --track. Для получения дополнительной информации смотрите страницы справки git по отслеживанию веток .

Будет
источник
Когда я проверяю с помощью -t, он устанавливает восходящий поток для толкания, только для вытягивания.
Джим
8

git branch --set-upstream <<origin/branch>> официально больше не поддерживается и заменяется git branch --set-upstream-to <<origin/branch>>

Турбут Алин
источник