Aprimorando o Fluxo de Trabalho Git: Ferramentas Essenciais de Linha de Comando e GUIs
O Git, como um sistema de controle de revisão distribuído, rápido e escalável, forma a espinha dorsal dos fluxos de trabalho modernos de desenvolvimento de software. Embora sua interface de linha de comando principal ofereça controle robusto sobre o versionamento, entender e alavancar seu extenso conjunto de comandos, juntamente com ferramentas de linha de comando especializadas e interfaces gráficas do usuário (GUIs), pode aumentar significativamente a produtividade e simplificar tarefas complexas. Este artigo irá guiá-lo através dos comandos Git essenciais para uso diário, aprofundar em utilitários poderosos de linha de comando que estendem as capacidades do Git e tocar brevemente em interfaces gráficas para otimizar sua experiência de controle de versão.
Seja você novo no Git ou um usuário experiente procurando refinar seu fluxo de trabalho, dominar essas ferramentas permitirá que você navegue por repositórios com maior eficiência, obtenha insights mais profundos sobre o histórico do seu projeto e colabore de forma mais eficaz com sua equipe. Exploraremos comandos práticos, UIs interativas baseadas em texto e utilitários especializados projetados para tornar sua jornada Git mais suave e perspicaz.
Fluxo de Trabalho Principal do Git: Operações Essenciais de Linha de Comando
O Git oferece um rico conjunto de comandos, categorizados em comandos "porcelain" de alto nível para usuários finais e comandos "plumbing" de baixo nível para scripting e gerenciamento interno de objetos. Aqui, focaremos nos comandos essenciais de porcelain para tarefas diárias.
Começando com um Repositório
Para iniciar um novo projeto ou ingressar em um existente, estes comandos são seu ponto de partida:
- Inicialize um novo repositório Git:
bash git init - Clone um repositório existente de uma URL:
bash git clone <url>
Gerenciando Alterações (Staging e Commit)
Antes de confirmar, o Git usa uma "área de staging" (também conhecida como índice) para preparar as alterações. Isso lhe dá controle granular sobre o que entra em cada commit.
- Adicione arquivos específicos à área de staging:
bash git add <file> - Adicione todos os arquivos não rastreados e modificados à área de staging:
bash git add . - Prepare interativamente partes de um arquivo (hunks):
bash git add -p - Mova ou renomeie um arquivo:
bash git mv <old> <new> - Exclua um arquivo do diretório de trabalho e da área de staging:
bash git rm <file> - Remova um arquivo do rastreamento Git sem excluí-lo do sistema de arquivos:
bash git rm --cached <file> - Desfaça o staging de um arquivo específico:
bash git reset <file> - Desfaça o staging de todas as alterações:
bash git reset - Verifique o status do seu diretório de trabalho e área de staging:
bash git status
Uma vez que as alterações são preparadas, você pode confirmá-las:
- Confirme as alterações preparadas (abre o editor para a mensagem):
bash git commit - Confirme as alterações preparadas com uma mensagem:
bash git commit -m 'Sua mensagem de commit' - Confirme todas as alterações rastreadas e não preparadas diretamente (ignora
git addpara modificações):
bash git commit -am 'Sua mensagem de commit'
Branching e Merging
Branches são fundamentais para a natureza distribuída do Git, permitindo o desenvolvimento paralelo. Merging e rebasing são maneiras de integrar alterações.
- Mude para um branch existente:
bash git switch <name> # OU (sintaxe mais antiga) git checkout <name> - Crie e mude para um novo branch:
bash git switch -c <name> # OU (sintaxe mais antiga) git checkout -b <name> - Liste todos os branches locais:
bash git branch - Liste branches por data de commit mais recente:
bash git branch --sort=-committerdate - Exclua um branch local (apenas se mesclado):
bash git branch -d <name> - Force a exclusão de um branch local (mesmo se não mesclado):
bash git branch -D <name> - Mescle um branch em seu branch atual:
bash git merge <branch-to-merge> - Mescle um branch em seu branch atual como um único commit (squash merge):
bash git merge --squash <branch-to-merge> git commit -m 'Mensagem de commit compactada' - Rebase seu branch atual sobre outro (reescreve o histórico):
bash git rebase <base-branch>
Colaboração com Remotos
O Git se destaca em ambientes colaborativos, enviando e recebendo alterações de repositórios remotos.
- Adicione um novo repositório remoto:
bash git remote add <name> <url> - Envie seu branch atual para seu branch de rastreamento remoto:
bash git push - Envie um novo branch pela primeira vez, definindo o upstream:
bash git push -u origin <name> - Force o push (use com extrema cautela, sobrescreve o histórico remoto):
bash git push --force-with-lease - Busque alterações de um remoto (não as integra em seus branches locais):
bash git fetch origin main - Busque alterações e, em seguida, mescle-as em seu branch atual:
bash git pull origin main # OU (se o branch de rastreamento estiver definido) git pull - Busque alterações e, em seguida, rebase seu branch atual:
bash git pull --rebase
Inspecionando Histórico e Diffs
Entender o que mudou e quem fez essas alterações é crucial para depuração e revisão.
- Mostre um resumo de todas as alterações preparadas e não preparadas:
bash git diff HEAD - Mostre a diferença apenas das alterações preparadas:
bash git diff --staged - Mostre a diferença apenas das alterações não preparadas:
bash git diff - Visualize logs de commit (várias opções):
bash git log # Log completo git log --graph # Árvore de histórico em arte ASCII git log --oneline # Conciso, uma linha por commit git log <file> # Histórico de um arquivo específico git log --follow <file> # Histórico incluindo renomeações git log -G