Git: o que é um ramo de rastreamento?
Infelizmente, sendo novo no git e vindo da SVN, essa definição não faz qualquer sentido para mim.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.
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?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
.
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 paramaster
noorigin
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
.
git branch --set-upstream-to origin/Development new-branch