Eu gostaria de empurrar e puxar todos os ramos por padrão, incluindo os recém-criados.
Existe uma configuração que eu possa definir?
Caso contrário, quando adiciono uma nova ramificação, localmente, e quero extraí-la do servidor, qual é a maneira mais simples de fazer isso?
Eu criei um novo ramo com o mesmo nome e tentei puxar, mas ele não funciona. Me pede todas as configurações remotas da filial. Como faço para configurá-lo.
git
version-control
branch
push
Lakshman Prasad
fonte
fonte
Respostas:
A maneira mais simples é fazer:
Isso enviará tags e ramificações.
fonte
-u
uma vez, por exemplogit push --all origin -u
, o rastreamento é configurado e, depois disso, você pode simplesmente usá-logit push
.git push --tags origin
para enviar todas as tags.Com o git moderno, você sempre busca todas as ramificações (como ramificações de rastreamento remoto no
refs/remotes/origin/*
espaço para nome, visíveis comgit branch -r
ougit remote show origin
).Por padrão (consulte a documentação da
push.default
variável de configuração), você empurra ramos correspondentes , o que significa que primeiro você precisa fazer com que ogit push origin branch
git o empurre sempregit push
.Se você deseja sempre enviar todas as ramificações por push , é possível configurar push refspec. Supondo que o controle remoto seja nomeado,
origin
você pode usar o git config :ou edite diretamente o
.git/config
arquivo para ter algo como o seguinte:fonte
git push --all origin
é bom publicar uma vez todas as ramificações e tags, embora o padrão até a semântica 'correspondente' da versão atual signifique que você enviaria todas as ramificações depois ... a menos que adicione uma nova ramificação ou tag. A configuração para "empurrar [...] todas as ramificações por padrão" é como escrita.fatal: Invalid refspec ''+refs/heads/*:refs/heads/*''
(Nota:.. Eu estou no git 2.0 Eu ainda estou trabalhando para fora como consertar isso)push.default
ésimple
.Incluir o + na especificação de envio é provavelmente uma má ideia, pois significa que o git fará um envio sem avanço rápido, mesmo sem o -f , e se o servidor remoto estiver configurado para aceitá-lo, você poderá perder o histórico.
Tente exatamente isso:
fonte
--global
opção a cada um deles para tornar este o padrão global para todos os seus repositórios.git remote add
.Eu usei os comandos abaixo para migrar todas as ramificações para o novo repositório.
NOTA : Eu tive que usar o segundo último comando (ou seja, pressionar primeiro o mestre) enquanto clonava um repo de Atlassian Stash para o AWS CodeCommit (repo em branco). Não tenho certeza do motivo, mas depois de pressionar (
git push new-origin --mirror
) o ramo padrão estava se referindo a algum outro ramo que nãomaster
.fonte
git push new_origin --all
apenas envie suas ramificações locais atuais para new_origin, nem todas as ramificações de origem.--bare
repositório, que é um pouco diferente de um repositório regular, ele possui apenas os.git
arquivos, não seus arquivos. É perfeitamente suficiente se você não vai trabalhar nele. Veja--bare
e--mirror
git-scm.com/docs/git-clone .Se você estiver movendo ramificações para um novo repositório de operações de um antigo e NÃO tiver todos os ramos de repositório antigos locais, será necessário rastreá-los primeiro.
Em seguida, adicione seu novo repositório remoto:
Em seguida, você pode enviar todos usando este comando:
Ou você pode configurar o repositório usando os comandos git config anotados nas outras respostas aqui, se você não estiver fazendo isso apenas uma vez ou estiver apenas procurando mover ramificações locais.
O ponto importante, as outras respostas apenas enviam todos os ramos LOCAIS. Se as ramificações existirem apenas em um repositório REMOTE alternativo, elas não se moverão sem rastreá-las primeiro. O loop for apresentado aqui ajudará nisso.
fonte
git branch --track reponame origin/reponame
caso contrário você vai obter todas as filiais remotas rastreados na filial local atualgit branch -r | grep -v '\->' | sed 's/ origin\///'
, que fornece apenas o nome da filial remota.Para ver todos os ramos sem usar,
git branch -a
você deve executar:Agora você pode ver todos os ramos:
Para empurrar todos os ramos, tente:
fonte
git fetch --all
?Se você estiver movendo todas as ramificações para um novo repositório, de um antigo, no repositório local, precisará configurar o rastreamento de cada ramo para os ramos de origem existentes, antes de passar para o novo repositório, caso contrário, todos os ramos de origem não aparecerão em a nova origem. Faça isso manualmente, rastreando ou verificando cada ramificação, ou use o liner:
Esse comando de uma linha é baseado nas versões dele em outras respostas nesta página, mas é sem dúvida melhor porque:
Em seguida, se você estiver alternando origens, substitua o link pela origem antiga e aponte para um novo controle remoto. Certifique-se de criar o novo controle remoto primeiro, usando a GUI do bitbucket / github, mas não inclua nenhum arquivo nele ou haverá um problema de mesclagem. Por exemplo
Agora empurre. Observe que o segundo comando é necessário para enviar as tags também:
fonte
Solução sem codificação codificada
origin
na configuraçãoUse o seguinte em seu gitconfig global
Isso empurra todos os ramos e todas as tags
Por que você NÃO deve codificar
origin
na configuração?Se você codificar:
origin
como um controle remoto em todos os repositórios. Portanto, você não poderá adicionar origem, mas precisará usarset-url
.origin
já existe (do ponto 1) lembre-se :)A busca já é resolvida pelo git moderno
De acordo com a resposta de Jakub Narębski:
fonte