Что делает «--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>

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>>

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.