Git
- Encontrar um commit de uma branch deletada
git reflog --no-abbrev
- Usar o blame a partir de um determinado commit
git blame $COMMIT_HASH^ -- /path/to/file
- Pesquisar um código que já foi removido
git log -c -S'removed_code' /path/to/file
- Editar um commit específico
git rebase -i '50defb6^'
# Alterar pick para edit no commit a ser alterado
# Fazer as alterações desejadas
git commit --all --amend --no-edit
git rebase --continue

git rebase -i
- Desfazer o commit mais recente (uncommit)
git reset --soft HEAD^
- Adicionar alterações ao commit mais recente
git commit --amend
- Melhorar o git log
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'"
git lg

git lg, um log melhorado
- Adicionar ao stage apenas pedaços de um arquivo
git add -p

git add -p
- Puxar uma branch juntando todos os comitts num só
git pull --squash origin $BRANCH
- Reescrever o nome e e-mail do autor no histórico de commits
git filter-branch --env-filter '
OLD_EMAIL="MY OLD E-MAIL"
CORRECT_NAME="MY CORRECT NAME"
CORRECT_EMAIL="MY CORRECT E-MAIL"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi' -- origin/HEAD..HEAD