Eu já tenho um ramo mestre local rastreando o ramo mestre remoto de um projeto do github. Agora, um colaborador meu criou uma nova ramificação no mesmo projeto e quero fazer o seguinte:
- crie uma nova ramificação localmente
- faça com que essa nova ramificação rastreie a ramificação remota recém-criada.
Como devo fazer isso corretamente?
git
github
git-branch
MLister
fonte
fonte
git checkout -t <remote>/<whatever>
. Se houver apenas um ramo de rastreamento remoto que termina,<whatever>
você pode apenas fazergit checkout <whatever>
e adivinhar o que você quer dizer.Respostas:
O primeiro comando garante que você tenha ramificação remota no repositório local. O segundo comando cria uma ramificação local que rastreia a ramificação remota. Ele assume que seu nome remoto é
origin
e o nome da filial ébranch-name
.--track
A opção está ativada por padrão para ramificações remotas e você pode omiti-la.fonte
git checkout <branchname>
e o git verificará automaticamente e configurará uma ramificação de rastreamento. Só queria reiterar o que @Mark Longair disse acima neste comentário: stackoverflow.com/questions/11262703/… .remotes/origin/develop
? Não deveria ser justoorigin/develop
? São os mesmos?git fetch --all
, caso contrário, novos ramos não seria improvávelcmd
, o eclipse detectará o novo ramo?Se você não possui uma filial local, é realmente tão simples quanto:
Por exemplo, se você buscar e houver um novo ramo de rastreamento remoto chamado
origin/feature/Main_Page
, faça o seguinte:Isso cria uma ramificação local com o mesmo nome da ramificação remota, rastreando essa ramificação remota. Se você tiver vários controles remotos com o mesmo nome de filial, poderá usar o menos ambíguo:
Se você já criou a ramificação local e não deseja excluí-la, consulte Como fazer com que uma ramificação existente do Git rastreie uma ramificação remota? .
fonte
git checkout 1.5-branch
(remotes/upstream/1.5-branch
está na saída degit branch -a
) resulta emerror: pathspec '1.5-branch' did not match any file(s) known to git.
Alterando isso paragit checkout upstream/1.5-branch
resulta em HEAD desanexado e nenhuma ramificação local é criada. Eu acho que essa parte da resposta está simplesmente errada. Isso é com git 2.4.3 #<remote>/<branch>
. Uma ramificação de rastreamento remoto é somente leitura, indicando onde estava a última ramificação no controle remoto. Chamarcheckout
essa ramificação ref coloca você no modo HEAD desanexado, como Piotr diz. Observe que especificar a ramificação remota a ser buscada evita a criação de ramificações de rastreamento remoto indesejadas.git checkout feature-branch
. NÃO estou sugerindo o uso do comandogit checkout origin/feature-branch
que, como vocês dois apontaram, resultará em uma cabeça desanimada inútil.Primeiro de tudo você precisa buscar o repositório remoto:
Você pode criar o novo ramo e configurá-lo para rastrear o ramo remoto que você deseja:
Você também pode usar "git branch --track" em vez de "git checkout -b", conforme especificado no máximo.
fonte
checkout -b
usar um ramo remoto como ponto de partida, será realmente desnecessário usá-lo--track
.git checkout <branchname>
, e houver uma ramificação remota com o mesmo nome (após agit fetch
), a ramificação local será automaticamente configurada para rastrear a remota.Quando a ramificação não é remota, você pode enviar sua ramificação local diretamente para o remoto.
ou quando você tem um ramo de desenvolvimento
ou quando a ramificação remota existir
Existem outras possibilidades para enviar um ramo remoto.
fonte