Git: adicionar vs push vs commit

114

Qual é a diferença entre o git add, pushe commit?

Só um pouco confuso vindo do SVN, onde "update" irá 'adicionar' coisas, e o commit fará um "push" e irá 'adicionar' também

Existem todas as funções diferentes dentro do git. Esperando alguma explicação de sua experiência.

CQM
fonte
2
Bom livro sobre git
iruediger

Respostas:

162
  1. git addadiciona seus arquivos modificados à fila para serem confirmados posteriormente . Os arquivos não foram confirmados

  2. git commitconfirma os arquivos que foram adicionados e cria uma nova revisão com um log ... Se você não adicionar nenhum arquivo, o git não fará o commit de nada. Você pode combinar as duas ações comgit commit -a

  3. git push empurra suas mudanças para o repositório remoto.

Esta figura desta folha de dicas do git dá uma boa ideia do fluxo de trabalho

insira a descrição da imagem aqui

git addnão está na figura porque a forma sugerida de comprometer é o combinado git commit -a, mas você pode adicionar mentalmente um git addao bloco de mudança para entender o fluxo.

Por último, a razão pela qual pushé um comando separado é por causa da gitfilosofia de. gité um sistema de controle de versão distribuído e seu diretório de trabalho local é o seu repositório! Todas as alterações que você confirma são instantaneamente refletidas e registradas. pushsó é usado para atualizar o repositório remoto (que você pode compartilhar com outras pessoas) quando terminar tudo o que estiver trabalhando. Esta é uma maneira legal de trabalhar e salvar as alterações localmente (sem sobrecarga de rede) e atualizá-lo apenas quando quiser, em vez de a cada commit. Isso indiretamente resulta em commits / ramificações mais fáceis, etc (por que não, certo? Quanto isso custa para você?) O que leva a mais pontos de salvamento, sem mexer com o repositório.

abcd
fonte
Então, o push commit localmente e, em seguida, o push para o servidor remoto ou é necessário primeiro fazer o commit e depois o push para obter trabalho no repositório remoto?
Andrew S
2
Você primeiro tem que fazer um commit ("git commit") que atualiza seu repositório local (também conhecido como em sua máquina local), então você tem que enviar para o servidor ("git push") que atualiza o repositório remoto (no servidor github por exemplo. )
Romain,
Eu adoraria uma função "adicionar mentalmente" no Git!
Junchen Liu
1
É aconselhável não apenas comprometer com frequência, mas também fazer push com frequência. Isso protege seu trabalho quando o disco rígido travar.
CCC
85

git add seleciona mudanças

git commit registra mudanças LOCALMENTE

git push mudanças de ações

Dustin
fonte
22
  • git add adiciona arquivos ao índice Git, que é uma área de teste para objetos preparados para serem confirmados.
  • git commit confirma os arquivos do índice para o repositório, git commit -a é um atalho para adicionar todos os arquivos rastreados modificados ao índice primeiro.
  • git push envia todas as alterações pendentes para o repositório remoto para o qual seu branch está mapeado (por exemplo, no GitHub).

Para entender o Git, você precisaria investir mais esforço do que apenas dar uma olhada na documentação, mas definitivamente vale a pena. Apenas não tente mapear comandos Git diretamente para o Subversion, já que a maioria deles não tem uma contraparte direta.

Adam Byrtek
fonte
Alguém deve explicar a diferença entre github local e remoto. O que você tem em local e remte. Esta é a chave que você precisa encontrar
Mehdi Amrollahi
11

Eu estava confuso sobre o que 'adicionar' realmente faz. Acabei de ler um parágrafo muito esclarecedor do livro Git Pro que gostaria de adicionar aqui, porque esclarece as coisas

“Acontece que Git prepara um arquivo exatamente como ele é quando você executa o comando git add. Se você confirmar agora, a versão de benchmarks.rb como estava quando você executou o comando git add pela última vez é como ele irá para o commit, não a versão do arquivo como ele aparece em seu diretório de trabalho quando você executa git commit. Se você modificar um arquivo depois de executar git add, terá que executar git add novamente para preparar a versão mais recente do arquivo: ”

Trecho de: Chacon, Scott. “Pro Git.” Springer, 19-08-2009T00: 00: 00 + 00: 00. iBooks. Este material pode estar protegido por direitos autorais.


fonte
7

add diz ao git para começar a rastrear um arquivo.

commit compromete suas mudanças atuais em seu repositório local

push empurra o repositório local para o upstream.

hvgotcodes
fonte
5

Pdf muito bom sobre muitos segredos do GIT.

Adicionar é o mesmo que add do svn (porém às vezes é usado para marcar o arquivo resolvido).

O commit também é o mesmo que o do svn, mas ele confirma as alterações em seu repositório local.

lord_t
fonte
2
Agora tenho que pesquisar svn add e commit. Meu grande medo: seus documentos me encaminharão para git add e commit. E lord_t é o autor dos ditos documentos.
Eric
O autor da pergunta tinha conhecimento do SVN, então presumi que ele conhecesse os comandos do svn.
lord_t
0

add -in git é usado para dizer ao git quais arquivos nós queremos enviar, ele coloca os arquivos na área de teste

commit- in git é usado para salvar arquivos na máquina local para que se fizermos qualquer alteração ou mesmo deletar os arquivos, ainda possamos recuperar nossos arquivos submetidos

push - se enviarmos nossos arquivos para a máquina local, eles ainda estarão sujeitos a serem perdidos se nossa máquina local for perdida, danificada, etc, para manter nossos arquivos seguros ou para compartilhar nossos arquivos geralmente queremos mantê-los em um controle remoto repositório como o Github. Para salvar em repositórios remotos, usamos push

exemplo Preparando um arquivo denominado index.html git add index.html

Confirmando um arquivo que é testado git commit -m 'nome do seu commit'

Enviando um arquivo para Github git push origin master

Herbert
fonte