Git: o que é um ramo de rastreamento?

Alguém pode explicar um "localizador" como se aplica ao git?

Aqui está a definição de git-scm.com:

um 'tracking branch' no Git é um local ramo que está ligado a um remoto ramo. Quando empurras e puxas isso branch, ele automaticamente empurra e puxa para o ramo remoto que é ligar.

Use isto se puxar sempre do botão o mesmo ramo a montante no novo branch, e se você não quiser usar "puxa" explicitamente.

Infelizmente, sendo novo no git e vindo da SVN, essa definição não faz qualquer sentido para mim.

eu estou lendo "Pragmática Guia para o Git" (livro excelente, por sinal), e eles parecem sugerir que o acompanhamento ramos são uma coisa boa e que depois de criar o seu primeiro remoto (origem, neste caso), você deve configurar o seu branch master para ser um rastreamento do ramo, mas infelizmente não cobre por um controle de ramo uma coisa boa ou que benefícios você obtém ao configurar o seu ramo mestre para ser um ramo de rastreamento do seu repositório de origem .

Alguém me pode esclarecer?

Author: Mwizak, 2011-01-14

4 answers

O Livro de progresso tem uma explicação muito boa.:

Localizadores

Verificar um ramo local a partir de um ramo remoto cria automaticamente o que é chamado de um ramo de rastreamento. Os ramos de rastreamento são ramos locais que têm uma relação direta com um ramo remoto. Se você estiver em um ramo de rastreamento e digitar git push, git automaticamente sabe para que servidor e branch empurrar. Além disso, a execução do Git puxa enquanto num destes galhos obtém todas as referências remotas e, em seguida, se funde automaticamente no ramo remoto correspondente.

Quando se clona um repositório, geralmente cria-se automaticamente um ramo mestre que rastreia a origem/mestre. É por isso que o git push e o git tiram o trabalho da caixa sem outros argumentos. No entanto, você pode configurar outros ramos de rastreamento se quiser-aqueles que não rastreiam os ramos na origem e não rastreiam o ramo mestre. O caso simples é o exemplo que você acabou de ver, executando git checkout -b [branch] [remotename]/[branch]. Se tem Git version 1.6.2 or later, you can also use the --track shorthand:

$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "serverfix"

Para configurar um ramo local com um nome diferente do ramo remoto, pode facilmente usar a primeira versão com um nome de ramo local diferente:

$ git checkout -b sf origin/serverfix
Branch sf set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "sf"

Agora, o seu ramo local sf irá empurrar automaticamente para e puxar de origin/serverfix.

 78
Author: Assaf Lavie, 2014-09-30 16:58:26

O livro Progit menciona:

Os ramos de localização são ramos locais que têm uma relação directa com um ramo remoto.
Não exactamente. The SO question "Having a hard time understanding git-fetch" inclui:

Não existe tal conceito de localizações locaissucursais, apenas localizações remotas sucursais.
Então,origin/master é um rastreamento remoto de ramo para master no origin repositorio.

Mas na verdade, assim que estabelecermos uma relação de ramo a montante entre:

    Um ramo local como master E um ramo de localização remota como origin/master

Então você pode considerar master como um ramo de localização local : Ele rastreia o ramo de localização remota origin/master que, por turnos, rastreia o ramo principal do acordo de recompra a montante origin.

alt text

 27
Author: VonC, 2017-05-23 10:31:11
Abaixo estão as minhas notas de aprendizagem pessoal sobre os git tracking branches, espero que seja útil para futuros visitantes.

enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here


Localizadores e "git fetch":

enter image description here enter image description here enter image description here

 9
Author: hagrawal, 2018-04-11 10:44:43
Foi assim que adicionei um ramo de localização para poder puxá-lo para o meu novo ramo.
git branch --set-upstream-to origin/Development new-branch
 4
Author: agrublev, 2016-12-08 18:35:30