O que '--set-upstream' faz?

327

O que o git --set-upstreamfaz?

Tentei entender isso lendo o manual do git , mas não entendi direito.

Евгений Масленков
fonte
13
Existe uma nova opção --set-upstream-toque foi introduzida devido às confusões (IIRC) na instalação a montante.
Philip Oakley

Respostas:

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

define a ramificação remota padrão para a ramificação local atual.

Qualquer git pullcomando futuro (com a filial local atual com check-out)
tentará trazer confirmações da <remote-branch>filial local atual.


Uma maneira de evitar a digitação explícita --set-upstreamé usar o sinalizador abreviado da -useguinte maneira:

git push -u origin local-branch

Isso define a associação upstream para qualquer futura tentativa de push / pull automaticamente.
Para mais detalhes, confira esta explicação detalhada sobre ramificações e rastreamento upstream .


Para evitar confusão, as versões recentes de gitdescontinuam essa --set-upstreamopção um tanto ambígua em favor de uma --set-upstream-toopção mais detalhada com sintaxe e comportamento idênticos

git branch --set-upstream-to <origin/remote-branch>
TheCodeArtist
fonte
7
O sinalizador --set-upstream está obsoleto e será removido. Considere o uso de --track ou --set-montante-to
Rohit Singh Sengar
1
neste comando git push -u origin local-brancho que originrepresenta? Existe algum caso em que eu digite algo diferente de origindepois do -u?
John Henckel
2
@JohnHenckel originrefere-se ao repositório remoto do git que foi usado para clonar. Pode haver vários repositórios git remotos . Nesse caso, originpode ser substituído pelo nome apropriado do controle remoto desejado ao qual se deseja se referir.
TheCodeArtist
fazer git remote -vpara encontrar seus controles remotos, o padrão é originnormalmente
xploreraj
39

Quando você envia para um controle remoto e usa o --set-upstreamsinalizador, o git define o ramo para o qual você está empurrando como o ramo de rastreamento remoto do ramo que está sendo enviado.

Adicionando um meio de filiais de monitoramento remoto que git então sabe o que você quer fazer quando você git fetch, git pullou git pushno futuro. Ele pressupõe que você deseja manter a filial local e a filial remota que está rastreando em sincronia e faz o necessário para conseguir isso.

Você pode conseguir a mesma coisa com git branch --set-upstream-toou git checkout --track. Veja as páginas de ajuda do git sobre o rastreamento de ramos para obter mais informações.

Vai
fonte
Quando eu faço check-out com -t, ele define o upstream para empurrar, apenas para puxar.
22419 Jim
8

git branch --set-upstream <<origin/branch>> oficialmente não é mais suportado e é substituído por git branch --set-upstream-to <<origin/branch>>

Turbut Alin
fonte