Olá,
Essa é uma espécie de enquete: quais seus truques e dicas preferidos do git?
Eu tenho uma apresentação de alguns meses atrás com algumas dicas que aprendi, mas a cada dia que passa aprendo outros truques interessantes, mas a cada dia aprendo algo novo.
Contribua com suas dicas, truques, ou compartilhando alguma experiência com git, na seção de comentários abaixo. :)
Algumas das dicas e truques que aprendi estão abaixo:
Opções que carrego no meu .gitconfig:
[color] ui=1
A opção acima faz muitos comandos (ex.: diff, log) mostrar saída colorida, para facilitar visualização.
Algumas opções úteis eu carrego na seção "alias" para ter abreviações curtas para comandos e opções que eu uso mais frequentemente:
[alias] ld=log --decorate --graph l1=log --pretty=oneline
As opções --decorate e --graph são extremamente úteis para enxergar o grafo de commits, e ver os branches e tags que apontam apra cada commit. A opção --pretty=oneline é útil para ver apenas um commit por linha, sem descrições longas. As três opções podem ser combinadas.
[alias] a3=am -3
A opção "-3" do "git am" é útil para facilitar resolução de conflitos.
usando branches
Outra dica que está mais para "recomendação" que "truque" é criar branches para tudo que for fazer localmente. Para isso dominar o "git rebase" e "git pull --rebase" é extremamente útil.
Com vários branches, você consegue separar facilmente trabalho em áreas diferentes que pode ser testados/terminados/enviados em momentos diferentes. Mas seja disciplinado ao dar nome aos branches, porque é fácil se perder quando se tem muitos branches antigos perdidos no repositório.
--
Eduardo
git stash, git commit --amend
Depois de fazer esse post, o Tiago Galesi me lembrou de outro comando: git stash.
É útil para guardar modificações antes de fazer commit.
Porém, eu uso pouco o git stash, porque depois de aprender a usar 'git-rebase --interactive', o que faço quando tenho trabalho ainda em andamento é simplesmente fazer um commit. Depois posso usar 'git rebase --interactive' ou 'git commit --amend' para consertar o commit incompleto.
Porém ainda assim há um caso onde o git stash é útil para mim, que é quando tenho trabalho ainda não commitado e gostaria de trocar de branch antes de fazer commit. Muitas vezes o "git checkout" não deixa o usuário trocar de branch quando há modificações não commitadas. Então faço a sequência:
--
Eduardo
corrigindo bug
Uma coisa que tenho usado com frequência no git rebase é o seguinte:
git tag bug
git checkout bug
... faço as modificações
git commit -a --amend
git tag fix
git rebase --onto fix bug
Muito útil, mas vale a dica de não ficar usando isso em coisa já publicada (como qualquer comando que reescreva o histórico)