Pergunta

Estamos trabalhando com um semi-centralizada git repositório aqui onde eu trabalho. Cada desenvolvedor tem sua própria sub-árvore no repositório git central, de modo que parece algo como isto:

master
alice/branch1
alice/branch2
bob/branch1
michael/feature
release/1.0
release/1.1

Working localmente na minha árvore Eu tenho topic/feature, o que corresponde a michael/feature na árvore central.

Estou usando

git push origin topic/feature:michael/feature

para empurrar as minhas alterações para a árvore remoto. No entanto, isso é complicado e propenso a erros (por exemplo, omitindo o nome do desenvolvedor, soletrar o nome do recurso, etc.).

Eu estou procurando uma maneira mais limpa para fazer isso. Por exemplo, "git push". Eu suspeito que a fixação de um controle remoto diferente com um modificado buscar refspec vai fazer isso, mas eu não tenho certeza de como exatamente para fazê-lo. Eu também não tenho certeza de como modificar as minhas definições de filiais atuais para usar o diferente remoto.

Meu .git/config atual é algo como:

[remote "origin"]
    url = git://central/git/project
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "topic/feature"]
    remote = origin
    merge = refs/heads/michael/project

Editar: Eu também gostaria de aplicar isso a puxa / buscas. Mas será que o branch.<name>.merge cuidar disso?

Eu vou continuar a pesquisar isso e postar aqui se eu encontrar alguma coisa, mas eu estou esperando para obter algumas outras idéias boas.

Editar 2: Eu decidi que eu vou manter nomes filiais locais e remotos a mesma. Parece que vai ser o menos trabalho e menos propenso a problemas futuros.

Foi útil?

Solução

Se você puder, eu sugiro que você use os mesmos nomes do ramo localmente e remotamente. Então git push vai empurrar todos os seus ramos locais para ramos correspondente no repositório central.

Para usar prefixos diferentes em repos locais e remotos, você precisa adicionar um mapeamento para seu arquivo de configuração cada vez que você criar um novo ramo de funcionalidade. O comando para configurar o mapeamento para tópico / NOME_BRACO é

 git config remote.origin.push refs/heads/topic/BRANCH_NAME:michael/BRANCH_NAME

Outras dicas

Em sua seção [remoto "origem"], adicione uma linha por mapeamento. Incluindo mestre para mestre.

push = refs/heads/master:master
push = refs/heads/topic/feature:michael/feature

Eu não sei como fazê-lo com o comando git-config.

Esteja ciente de que a partir de agora, todos os ramos são empurrados ao mesmo quando você faz um git push reta (sem parâmetros).

Você se importaria de explicar por que você não manter os mesmos nomes do ramo local e remotamente?

Você pode mapear o seu ramo de diferente ramo de rastreamento no controle remoto com algo parecido com isto:

git remote add heroku git@heroku.com:YOURAPPNAME.git
git checkout -b heroku -t heroku/master

As suas extremidades configuração até semelhante ao que @ Paulo sugere (um pouco "mais simples" na verdade).

Veja este essência (com ajustes por mim) para as etapas de uso que funcionam bem para mim https: //gist.github .com / 2002048 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top