Como configurar para puxar a mesma ramificação por padrão?

5

Quando eu uso os novos controles remotos adicionados, preciso especificar o nome da ramificação explicitamente:

$ git pull remote1
... 
Error: you didn't specify a branch name.

$ git pull remote1 master

Embora eu esteja trabalhando na ramificação master .

Talvez seja útil extrair de um ramo diferente de diferentes controles remotos, mas isso nunca aconteceu comigo. Em nossa equipe, nunca puxamos uma ramificação de nome diferente para o ramo atual com check-out.

Então, eu posso configurar o git para sempre puxar da ramificação com o mesmo nome?

    
por Xiè Jìléi 22.04.2011 / 12:09

1 resposta

7

Se você não quiser redefinir a "configuração upstream" de sua filial local, poderá usar isto:

git pull remote1 "$(git rev-parse --symbolic-full-name HEAD)"

Ele provavelmente fará coisas inesperadas se seu HEAD local for separado.

Você pode empacotá-lo como um alias do Git para facilitar a digitação (embora ainda seja necessário distribuir o alias para todos os usuários):

git config --global alias.pullcb \
 '!sh -c '\''git pull "$1" "$(git rev-parse --symbolic-full-name HEAD)"'\'' -'

Use o alias como este:

git pullcb remote1

Eu diria que esse tipo de relação de ramificação (precisa puxar facilmente da mesma ramificação em qualquer um dos vários controles remotos) não é facilmente configurável porque raramente é útil quando a maioria do trabalho é feito em ramos tópicos .

Por outro lado, se o "novo controle remoto" for a nova fonte primária de upstream para sua filial local, você deve considerar atualizar a "configuração upstream" de sua filial local para poder simplesmente usar git pull (sem especificar um nome remoto).

Você pode verificar a configuração upstream de uma ramificação no Git 1.7.0 e posterior 1 com

git rev-parse --symbolic-full-name my-branch@{upstream}

Você pode atualizar a configuração upstream no Git 1.7.0 e posterior 2 com

git branch --set-upstream my-branch some-remote/their-branch

Uma vez que sua filial tenha a configuração apropriada do upstream, você pode simplesmente usar git pull para extrair do "ramo upstream" da filial atual.

Por fim, a configuração upstream de uma ramificação é controlada pelas variáveis de configuração branch.<name>.remote e branch.<name>.merge (consulte git-config (1) ). As opções --track e --no-track de git branch e git checkout pode ser usado para controlar se essas variáveis são definidas quando uma ramificação é criada. A variável de configuração branch.autoSetupMerge controla o comportamento padrão (quando nem --track , nem --no-track são fornecidos); o padrão é criar a configuração upstream para ramificações criadas a partir de ramificações de rastreamento remoto. Assim, os seguintes comandos criam a nova ramificação local “my-branch” e a configuram para rastrear a ramificação “their-branch” do remoto “some-remote”:

git branch my-branch some-remote/their-branch
git checkout -b my-branch some-remote/their-branch

1 Para as versões do Git anteriores a 1.7.0, você pode verificar a configuração upstream para “my-branch” desta forma:

git config branch.my-branch remote && git config branch.my-branch.merge

Veja git-config (1) para descrições dos valores.

Você também pode inspecionar manualmente o arquivo .git/config .

2 Para as versões do Git anteriores a 1.7.0, você pode alterar a configuração upstream para "my-branch" como esta:

git config branch.my-branch.remote some-remote &&
git config branch.my-branch.merge refs/heads/their-branch

Veja git-config (1) para descrições dos valores.

Você também pode editar manualmente o arquivo .git/config ( git config -e no Git 1.6.3 e posterior).

    
por 23.04.2011 / 08:11