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="<the old e-mail>"
	CORRECT_NAME="<the new name>"
	CORRECT_EMAIL="<the new 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