Saving changes

Como salvar alterações

Ao trabalhar no Git, ou em outros sistemas de controle de versão, o conceito de "salvar" é um processo mais matizado do que salvar em um processador de palavras ou em outros aplicativos tradicionais de edição de arquivo. A expressão de software tradicional "salvar" é sinônimo do termo do Git "confirmar". Uma confirmação é o equivalente do Git de "salvar". O salvar tradicional deve ser pensado como uma operação do sistema de arquivos usada para substituir o arquivo existente ou gravar um novo arquivo. Como alternativa, a confirmação do Git é uma operação que age na coleta de arquivos e diretórios.

Salvar alterações no Git vs SVN também é um processo diferente. Confirmações SVN ou 'verificações' são operações que fazem um envio remoto para um servidor centralizado. Isso significa que uma confirmação SVN precisa de acesso à Internet para 'salvar' totalmente as alterações do projeto. As confirmações do Git podem ser capturadas e construídas localmente e, em seguida, enviadas para um servidor remoto conforme necessário usando o comando git push -u origin master. A diferença entre os dois métodos é uma diferença fundamental entre designs de arquitetura. O Git é um modelo de aplicativo distribuído enquanto o SVN é um modelo centralizado. Os aplicativos distribuídos são, geralmente, mais robustos do que se não tivessem um único ponto de falha como um servidor centralizado.

Os comandos: git add, git status e git commit são usados em combinação para salvar uma captura instantânea do estado atual de um projeto do Git.

O Git tem um mecanismo de salvamento adicional chamado 'stash'. O stash é uma área de armazenamento temporário para alterações que ainda não estão prontas para serem confirmadas. O stash opera no diretório ativo, a primeira de três árvores e tem diversas opções de uso. Para saber mais, visite a página git stash.

Um repositório do Git pode ser configurado para ignorar arquivos ou diretórios específicos. Isso vai impedir que o Git salve alterações em qualquer conteúdo ignorado. O Git tem vários métodos de configuração que gerenciam a lista para ignorar. A configuração do Git para ignorar é discutida mais detalhadamente na página git ignore .

git add

O comando git add adiciona uma alteração no diretório ativo à área de staging. Ele diz ao Git que você quer incluir atualizações a um arquivo particular na próxima confirmação. No entanto, git add não afeta realmente o repositório de nenhuma forma significativa—as alterações não são realmente gravadas até você executar git commit.

Juntamente com esses comandos, você também vai precisar de git status para ver o estado do diretório ativo e da área de staging.

Como funciona

Os comandos git add e git commit compõem o fluxo de trabalho fundamental do Git. Esses são os dois comandos que cada usuário do Git precisa entender, independentemente do modelo de colaboração da equipe. Eles são os meios para gravar versões de um projeto no histórico do repositório.

O desenvolvimento de um projeto gira em torno do padrão básico editar/montar/confirmar. Primeiro, você edita os arquivos no diretório ativo. Quando estiver pronto para salvar uma cópia do estado atual do projeto, você monta as alterações com git add. Depois que estiver satisfeito com a captura instantânea montada, você a confirma no histórico do projeto com git commit. O comando git reset é usado para desfazer uma confirmação ou captura instantânea montada.

Além de git add e git commit, um terceiro comando git push é essencial para um fluxo de trabalho colaborativo completo do Git. git push é utilizado para enviar as alterações confirmadas para repositórios remotos para colaboração. Isso permite que outros membros da equipe acessem um conjunto de alterações salvas.

Git Tutorial: git add Snapshot

O comando git add não deve ser confundido com svn add, que adiciona um arquivo ao repositório. Em vez disso, git add funciona no nível mais abstrato de alterações. Isso significa que git add precisa ser chamado toda vez que você altera um arquivo, enquanto svn add precisa ser chamado apenas uma vez para cada arquivo. Isso pode parecer redundante, mas esse fluxo de trabalho faz com que seja muito mais fácil manter um projeto organizado.

A área de staging

A função principal do comando git add é promover alterações pendentes no diretório ativo para a área git staging. A área de staging é um dos recursos mais exclusivos do Git e pode levar um tempo para você se acostumar a ela se você estiver vindo de um plano de fundo de SVN (ou mesmo de um Mercurial). Ajuda pensar nela como um buffer entre o diretório ativo e o histórico do projeto. A área de staging é considerada uma das "três árvores" do Git, juntamente com o diretório ativo e o histórico de confirmação.

Em vez de confirmar todas as alterações feitas desde a última confirmação, a montagem permite agrupar as alterações relacionadas em capturas instantâneas altamente focadas antes de realmente confirmá-las no histórico do projeto. Ou seja, você pode fazer todo tipo de edição em arquivos não relacionados e, em seguida, voltar e dividi-los em confirmações lógicas adicionando alterações relacionadas à montagem e confirmá-las separadamente. Como em qualquer sistema de controle de revisão, é importante criar confirmações atômicas para que seja fácil controlar os bugs e reverter as alterações com impacto mínimo para o restante do projeto.

Opções comuns

git add <file>

Montar todas as alterações em <file> para a próxima confirmação.

git add <directory>

Montar todas as alterações em <directory> para a próxima confirmação.

git add -p

Comece uma sessão de staging interativa que deixe você escolher partes de um arquivo para adicionar à próxima confirmação. Isso vai mostrar a você um trecho das alterações e solicitar um comando. Use y para montar o trecho, n para ignorar o trecho, s para dividi-lo em trechos menores, e para editar manualmente o trecho e q para sair.

Exemplos

Quando você está começando um novo projeto, git add tem a mesma função que svn import. Para criar uma confirmação inicial do diretório atual, use os dois comandos a seguir:

git add .
git commit

Depois que você deixa seu projeto ativo e em funcionamento, novos arquivos podem ser adicionados passando o caminho para git add:

git add hello.py
git commit

Os comandos acima também podem ser usados para registrar alterações nos arquivos existentes. Novamente, o Git não diferencia entre alterações de staging em novos arquivos e alterações em arquivos que já foram adicionados ao repositório.

Resumo

Na revisão, git add é o primeiro comando em uma cadeia de operações que direciona o Git para "salvar" uma captura instantânea do estado do projeto atual no histórico de confirmação. Quando usado sozinho, git add promove alterações pendentes do diretório ativo para a área de staging. O comando git status é usado para examinar o estado atual do repositório e pode ser usado para confirmar uma promoção de git add. O comando git reset é usado para desfazer um git add. O comando git commit é, então, usado para confirmar uma captura instantânea no diretório de staging para o histórico de confirmação de repositórios.

Pronto para aprender sobre o Git?

Experimente este tutorial interativo.

Comece agora mesmo