Eu gostaria de pegar uma única ramificação (nem todas elas) de um repositório remoto e criar uma ramificação de rastreamento local que possa rastrear outras atualizações nessa ramificação remota. As outras ramificações no repositório remoto são muito grandes, então eu gostaria de evitar buscá-las. Como eu faço isso?
Edit: Eu mesmo descobri isso, mas o StackOverflow se recusa a me fornecer a resposta como resposta, então eu a colocarei aqui na pergunta.
Você usa a opção -t para git remote add, por exemplo:
git remote add -t remote-branch remote-name remote-url
Você pode usar várias " -t branch
" opções para pegar várias ramificações.
Respostas:
Trabalhou para mim.
fonte
FETCH_HEAD
após a busca. Obrigado!git checkout FETCH_HEAD
check-outremote_name
éorigin
. por exemplo:git fetch origin <branch_name>
Uma maneira é a seguinte:
No entanto, isso não configura o rastreamento.
Para obter mais informações, consulte a documentação do git fetch .
EDIT : como o @ user1338062 observa abaixo : se você ainda não possui um clone local do repositório ao qual deseja adicionar a nova ramificação, mas deseja criar um novo repositório local, então ele
git clone --branch <branch_name> --single-branch <repo_url>
fornece uma solução mais curta.fonte
git checkout <branchname>
, vejo que o git configura automaticamente a ramificação de rastreamento, se a única ramificação com esse nome for a ramificação remota.git clone
agora suporte--branch
e--single-branch
opções, postei uma resposta com demonstração .Eu sei que já existem muitas respostas, mas estas são as etapas que funcionaram para mim:
git fetch <remote_name> <branch_name>
git branch <branch_name> FETCH_HEAD
git checkout <branch_name>
Eles são baseados na resposta de @Abdulsattar Mohammed, no comentário de @Christoph nessa resposta e nas outras perguntas de excesso de pilha e suas respostas:
fonte
Para atualizar o controle remoto existente para rastrear ramificações específicas, use apenas:
De
git help remote
:fonte
--single-branch
repositório e não pude baixar ramificações adicionais mais tarde. Obrigado!Uma maneira de fazer isso:
na busca .git / config para o repositório remoto deve ser definido para buscar qualquer ramificação:
para buscar a ramificação remota:
para criar uma ramificação local 'branch-name' configurada para rastrear a ramificação remota 'branch-name' da origem.
listar todos os ramos
fonte
Copiado da postagem do autor:
Use a
-t
opção paragit remote add
, por exemplo:Você pode usar várias
-t branch
opções para obter várias ramificações.fonte
Se você deseja alterar o padrão para "git pull" e "git fetch" para buscar apenas ramificações específicas, é possível editar .git / config para que a configuração remota se pareça com:
Isso buscará apenas o mestre da origem por padrão. Veja para mais informações: https://git-scm.com/book/en/v2/Git-Internals-The-Refspec
EDIT: Acabei de perceber que é a mesma coisa que a opção -t faz para o git remote add. Pelo menos, é uma boa maneira de fazer isso depois que o controle remoto é adicionado, se você não deseja excluir o controle remoto e adicioná-lo novamente usando -t.
fonte
Por uma questão de integridade, eis um exemplo de comando para um novo checkout:
Como mencionado em outras respostas, ele define
remote.origin.fetch
assim:fonte
versão git: 2.74
É assim que eu faço:
fonte
git versão 2.16.1.windows.4
Apenas executando git fetch remoteRepositoryName branchName
(eg: git fetch origin my_local_branch)
é suficiente. A busca será feita e uma nova ramificação local será criada com o mesmo nome e o rastreamento será definido como ramificação remota.Em seguida, execute o git checkout branchName
fonte
git branch
até que você faça o check-out deleMinhas soluções alternativas:
se você não possui um clone local:
fonte
<remote_name>
você deseja usar (fique à vontade para usarorigin
e pule a etapa 1.)git remote add <remote_name> <remote_url>
git fetch <remote_name> <branch>
<your_local_branch_name>
você gostaria de usar. Pode ser o mesmo que<branch>
.git checkout <remote_name>/<branch> -b <your_local_branch_name>
Espero que ajude!
fonte
A resposta realmente depende da lista atual de ramificações de rastreamento que você possui. Você pode buscar uma ramificação específica remota
git fetch <remote_name> <branch_name>
somente se a ramificação já estiver na lista de ramificações de rastreamento (você pode verificá-la emgit branch -r
).Suponhamos que eu tenha clonado o controle remoto com a opção --single-branch anteriormente e, nesse caso, o único ramo de rastreamento que tenho é o "clonado". Estou um pouco confuso com as recomendações para ajustar o git config manualmente, bem como digitando
git remote add <remote_name> <remote_url>
comandos. Como o "git remote add" configura um novo controle remoto, obviamente ele não funciona com o repositório remoto existente; O fornecimento de opções "-t branch" não me ajudou.Caso o controle remoto exista, e a ramificação que você deseja buscar existe nesse controle remoto:
Verifique
git branch -r
se você pode ver esse ramo como um ramo de rastreamento. Caso contrário (como no meu caso com um único clone de ramificação), adicione essa ramificação à lista de ramificações de rastreamento "git remote set-branches" com a opção --add:git remote set-branches --add <remote_name> <branch_name>
Agora você pode buscar um ramo específico (duplicar aqui outras respostas):
git fetch <remote_name> <branch_name>
E crie e efetue o checkout de uma nova filial local com "checkout --track", que receberá o mesmo "branch_name" que uma filial de rastreamento:
git checkout --track <remote_name>/<branch_name>
fonte
A maneira mais simples de fazer isso
Exemplo: quero buscar o ramo uat da origem e mudar para esse como o ramo de trabalho atual.
fonte