Estou usando o git há algum tempo, mas nunca precisei configurar um novo repositório remoto e fiquei curioso em fazê-lo. Eu tenho lido tutoriais e estou confuso sobre como fazer o "git push" funcionar.
Se eu simplesmente usá- git push
lo, solicita que eu veja um ramo padrão (?) Para apontar? Qual é a diferença entre essas duas opções que ele me fornece?
git config --global push.default matching
git config --global push.default simple
A correspondência apenas empurra todos os ramos que eu tenho no meu repositório local e, se eles não coincidirem, tenho que dizer manualmente para enviar os ramos novos que eu tenho, correto? Essa é a melhor prática a ser usada ou a simples é a melhor?
git
git-push
git-pull
git-remote
Josh
fonte
fonte
pull.default
está disponível para atualizar todos os ramos localmenteRespostas:
git push
pode enviar todas as ramificações ou uma única dependente dessa configuração:Empurre todos os ramos
Ele empurrará todos os ramos para o ramo remoto e os fundirá. Se você não deseja enviar todas as ramificações, pode enviar apenas a ramificação atual.
Enviar apenas a ramificação atual
Portanto, é melhor, na minha opinião, usar essa opção e enviar seu código por ramo. É melhor enviar ramificações manualmente e individualmente.
fonte
push.default current
da resposta de @UpAndAdam. Não sabia disso.simple
não é mais uma opção. No1.7.8.4
(e anterior?), Resulta em um erro quando você tenta enviar por push. mascurrent
ainda está disponíveltracking
-> empurre o ramo atual para o ramo upstream.simple
não faz sentido, contradiz esta resposta e está incorreta - o que torna essa resposta confusa. A página vinculada dizsimple
"empurrará as ramificações uma a uma. Principalmente conectada à ramificação atual". Isso significa que ele empurrará os galhos sequencialmente e não em paralelo? O que significa "principalmente conectado"? Então, a descrição parasimple
continua citando a descrição paramatching
, a qual alguém pensaria que significa que a descriçãomatching
também se aplicasimple
. Mas obviamente isso não é verdade.Da documentação do GIT: Git Docs
Abaixo fornece todas as informações. Em suma,
simple
apenas empurrará ocurrent working branch
e, mesmo assim, somente se ele também tiver o mesmo nome no controle remoto. Essa é uma configuração muito boa para iniciantes e se tornará o padrão emGIT 2.0
Considerando
matching
que empurrará todos os ramos localmente que tenham o mesmo nome no controle remoto. (Sem considerar o seu ramo de trabalho atual). Isso significa que potencialmente muitas ramificações diferentes serão enviadas, incluindo aquelas que você talvez nem queira compartilhar.No meu uso pessoal, geralmente uso uma opção diferente:
current
que empurra o ramo de trabalho atual (porque eu sempre faço o ramo de alterações). Mas para um iniciante, eu sugirosimple
fonte
git push origin master
que fará a mesma coisa. O ponto dos modos e padrões é geralmente o que acontece quando você simplesmente dizgit push
e não diz a ele um controle remoto ou um ramo. Qual configuração padrão? você quer dizer a configuração padrão de push.default? a configuração padrão em que versão do git ... se você não conseguir, seu comentário é extremamente vago.Notas de versão do Git v2.0
Notas de compatibilidade com versões anteriores
Quando
git push [$there]
não diz o que enviar, usamos a semântica tradicional de "correspondência" até agora (todas as suas ramificações foram enviadas para o controle remoto desde que já existam ramificações com o mesmo nome por lá). No Git 2.0, o padrão agora é a semântica "simples", que empurra:somente a ramificação atual para a ramificação com o mesmo nome e somente quando a ramificação atual estiver configurada para integrar-se a essa ramificação remota, se você estiver empurrando para o mesmo controle remoto de onde você busca; ou
somente a ramificação atual para a ramificação com o mesmo nome, se você estiver enviando para um controle remoto que não é o local de onde você normalmente busca.
Você pode usar a variável de configuração "push.default" para alterar isso. Se você é um veterano que deseja continuar usando a semântica "correspondente", pode definir a variável como "correspondente", por exemplo. Leia a documentação para outras possibilidades.
Quando
git add -u
egit add -A
são executados dentro de um subdiretório sem especificar quais caminhos adicionar na linha de comando, eles operam em toda a árvore para obter consistência comgit commit -a
outros comandos (esses comandos costumavam operar apenas no subdiretório atual). Digagit add -u .
ougit add -A .
se você deseja limitar a operação ao diretório atual.git add <path>
é o mesmo degit add -A <path>
agora, para quegit add dir/
você observe os caminhos removidos do diretório e registre a remoção. Nas versões mais antigas do Git,git add <path>
costumava ignorar remoções. Você podegit add --ignore-removal <path>
adicionar apenas os caminhos adicionados ou modificados<path>
, se realmente quiser.fonte