Aviso: push.default está desativado; seu valor implícito está mudando no Git 2.0

1623

Estou usando o Git há algum tempo e baixei recentemente uma atualização apenas para encontrar essa mensagem de aviso quando tento push.

warning: push.default is unset; its implicit value is changing in 
Git 2.0 from 'matching' to 'simple'. To squelch this message 
and maintain the current behavior after the default changes, use: 

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use: 

  git config --global push.default simple

Obviamente, posso defini-lo com um dos valores mencionados, mas o que eles significam? Qual é a diferença entre simplee matching?

Se eu alterá-lo em um cliente, precisarei fazer algo em outros clientes com os quais compartilho repo?

Marko
fonte
1
Nota: o git 2.8 (março de 2016) removerá esse aviso! Veja stackoverflow.com/a/22356644/6309
VonC

Respostas:

2148

Isso é explicado em detalhes nos documentos , mas tentarei resumir:

  • matchingmeios git pushvai empurrar todas as suas filiais locais para aqueles com o mesmo nome no controle remoto. Isso facilita empurrar acidentalmente um ramo que você não pretendia.

  • simplemeios git pushvai empurrar apenas o ramo atual para aquele que git pulliria puxar , e também verifica que seus nomes correspondem. Esse é um comportamento mais intuitivo, e é por isso que o padrão está sendo alterado para isso.

Essa configuração afeta apenas o comportamento do seu cliente local e pode ser substituída especificando explicitamente quais ramificações você deseja enviar na linha de comando. Outros clientes podem ter configurações diferentes, isso afeta apenas o que acontece quando você não especifica quais ramificações deseja enviar .

hammar
fonte
16
Fico feliz em saber esta mudança. Quando eu era novo no git, acidentalmente empurrei todas as filiais locais, pensando git pushque empurraria apenas a filial atual.
rahul286
51
O motivo é que, empiricamente, a maioria espera que o novo comportamento padrão
Blake Miller
125
Seria muito melhor ter seu resumo maravilhosamente claro na própria mensagem de aviso, em vez de as instruções nos instruindo a abrir a documentação e procurar por uma string.
Hertzsprung
116
"É explicado com muita clareza nos documentos" É claro que se você terminar na página certa, no entanto, o manual para git push nem sequer menciona a palavra simples , que provavelmente é quem tantas pessoas acabaram aqui .
quer
36
O resumo de hammar é uma explicação muito mais concisa do que os documentos do git.
AJ.
19

Percebo que este é um post antigo, mas como acabei de encontrar o mesmo problema e tive problemas para encontrar a resposta, pensei em adicionar um pouco.

Portanto, a resposta de @ hammar está correta. De push.default simplecerta forma, usar é como configurar o rastreamento em suas ramificações, para que você não precise especificar controles remotos e ramificações ao empurrar e puxar. A matchingopção enviará todas as ramificações para as correspondentes correspondentes no controle remoto padrão (que é o primeiro que foi configurado, a menos que você tenha configurado seu repo de outra forma).

Uma coisa que espero que outros achem útil no futuro é que eu estava executando o Git 1.8 no OS X Mountain Lion e nunca vi esse erro. Atualizar para o Mavericks é o que de repente fez aparecer (a execução git --versionmostrará o git version 1.8.3.4 (Apple Git-47)que eu nunca tinha visto até a atualização para o sistema operacional.

wgp
fonte
2
Eu também comecei a ver isso depois de atualizar para o Mavericks. Então, acho que o Git foi atualizado ao mesmo tempo que o Mavericks, como você está sugerindo.
Per Lundberg
8

Se você receber uma mensagem do git reclamando sobre o valor simplena configuração, verifique seu git version.

Após a atualização XCode(em Macexecução Mountain Lion), que também foi atualizada gitde 1.7.4.4 para 1.8.3.4 , os shells iniciados antes da atualização ainda estavam executando o git 1.7.4.4 e reclamaram do valor simplede push.default na configuração global.

A solução foi fechar as conchas executando a versão antiga gite usar a nova versão!

Tom Barron
fonte
13
Estou usando uma nova instalação do Xcode (git é a versão 1.8.5.2) e ainda estava tendo esse erro até executar:git config --global push.default simple
Sam-Graham
2

Fiquei me perguntando por que estava recebendo essa grande mensagem de aviso no Ubuntu 16.04 (que vem com o Git 2.7.4), mas não no Arch Linux. O motivo é que o aviso foi removido no Git 2.8 (março de 2016):

Durante a transição na versão 2.0 do Git, o usuário costumava receber um aviso bastante alto ao executar o "git push" sem definir a variável de configuração push.default. Não alertamos mais porque a transição foi concluída há muito tempo.

Portanto, você não verá o aviso se tiver o Git 2.8 e posterior e não precisar definir, a push.defaultmenos que queira alterar o 'simple'comportamento padrão .

Eugene Yarmash
fonte