Como salvar alterações

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 e no SVN também são processos diferentes. Commits ou "verificações" de SVN são operações que fazem envio por push remoto para um servidor centralizado. Então um commit de SVN precisa de acesso à Internet para "salvar" todas as alterações do projeto. Os commits do Git podem ser capturados e construídos no local e, em seguida, enviados por push para um servidor remoto conforme necessário usando o comando git push -u origin main. 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, em geral, mais robustos, pois não têm um único ponto de falha como um servidor centralizado.

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 realizar commit. 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.

Os repositórios do Git podem ser configurados para ignorar arquivos ou diretórios específicos. Assim você impede 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 a serem ignorados. A configuração do Git para ignorar é discutida em mais detalhes 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 específico no próximo commit. No entanto, git add não tem efeito real e significativo no repositório — as alterações não são gravadas mesmo até você executar git commit.

Junto 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, não importa o modelo de colaboração da equipe. Eles são os meios de 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/preparar/fazer commit. Primeiro, você edita os arquivos no diretório ativo. Quando estiver pronto para salvar uma cópia do estado atual do projeto, você prepara as alterações com git add. Depois que estiver satisfeito com a captura de tela montada, você faz commit no histórico do projeto com git commit. O comando git reset é usado para desfazer um commit ou captura de tela preparada.

Além de git add e git commit, um terceiro comando, git push, é essencial para um fluxo de trabalho colaborativo completo do Git. O git push é utilizado para enviar as alterações com commit para repositórios remotos para colaboração. Assim os outros membros da equipe podem acessar um conjunto de alterações salvas.

Tutorial do Git: captura instantânea de git add

O comando git add não deve ser confundido com svn add, que adiciona um arquivo ao repositório. O git add funciona no nível mais abstrato de alterações. Ou seja: o git add precisa ser chamado toda vez que você altera um arquivo, enquanto o svn add precisa ser chamado apenas uma vez para cada arquivo. 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 contexto de SVN (ou mesmo de 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, junto com o diretório ativo e o histórico de commits.

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>

Preparar todas as alterações em <file> para o próximo commit.

git add <directory>

Preparar todas as alterações em <directory> para o próximo commit.

git add -p

Comece uma sessão de staging interativa que deixe você escolher partes de um arquivo para adicionar ao próximo commit. Ela 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 fazer a divisão em trechos menores, e para fazer a edição manual do 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 um commit 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 de tela do estado do projeto atual no histórico de commit. 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 fazer commit de uma captura de tela no diretório de staging para o histórico de commit de repositórios.

Pronto(a) para aprender Git?

Tente este tutorial interativo.

Comece agora mesmo