Git

  • Reverter somente um arquivo
git checkout $COMMIT_HASH~1 -- path/to/file
git commit
  • 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

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

git lg, um log melhorado

  • Adicionar ao stage apenas pedaços de um arquivo
git add -p
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