Last active
February 17, 2017 22:24
-
-
Save gustavomdsantos/64c7ae186b21648ed8aa to your computer and use it in GitHub Desktop.
Git rebase, format-branch command examples
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
git rebase -i 1ec6d533d8555bbe72cec3881aba8a4433044a2a # SHA hash do commit "HEAD temporário" (commit anterior ao desejado para modificar!) | |
git log --format=fuller #Ver todos os commits com todas as informações | |
# "Commit amending" com mesmo autor (dentro de um "edit" do Rebase) | |
GIT_COMMITTER_DATE="Mon Apr 20 18:54:39 2015 -0300" git commit --date="Mon Apr 20 18:54:39 2015 -0300" --amend | |
# "Commit amending" com autor diferente (dentro de um "edit" do Rebase) | |
GIT_COMMITTER_NAME="Username desejado como exibido no git log" GIT_COMMITTER_EMAIL="email_da@pessoa.com" GIT_COMMITTER_DATE="Fri May 22 00:52:37 2015 -0300" git commit --author="Username desejado como exibido no git log <email_da@pessoa.com>" --date="Fri May 22 00:52:37 2015 -0300" --amend | |
# Após o "amending", confirme o Rebasing: | |
git rebase --continue | |
# Format-branch para modificar campo "Commiter" e "CommiterDate" modificado após um rebasing | |
git filter-branch -f --env-filter 'GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE && GIT_COMMITTER_NAME=$GIT_AUTHOR_NAME && GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL && export GIT_COMMITTER_DATE GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL' | |
# Format-branch para deixar commits reescritos com `amending` com a data mais recente da modificação | |
# (ao invés da data inicial de criação do commit) | |
git filter-branch -f --env-filter 'GIT_AUTHOR_DATE=$GIT_COMMITTER_DATE && export GIT_AUTHOR_DATE' | |
# Modificar a mensagem de commit inicial vazia de um GitHub Gist (não funciona | |
# `git rebase -i --root`: | |
# Código reusado de: | |
# http://stackoverflow.com/a/14091160 | |
# http://stackoverflow.com/a/15470598 | |
git checkout $(git log --pretty=format:%H | tail -1) && git commit --amend && git rebase HEAD master | |
# Renomear nome de autor e email incorretos em commits já feitos anteriormente | |
# Consertando erro feito por causa de um Git mal configurado: | |
# Código reusado de: | |
# http://schacon.github.io/git/git-filter-branch.html | |
git filter-branch --env-filter ' | |
if [ "$GIT_AUTHOR_NAME" = "alunoinf" ]; | |
then | |
GIT_AUTHOR_NAME="RenanOfugi"; | |
GIT_COMMITTER_NAME=$GIT_AUTHOR_NAME; | |
GIT_AUTHOR_EMAIL="renangyn2010@hotmail.com"; | |
GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL; | |
fi' HEAD | |
# O exemplo acima renomeará todos os commits que tiverem o autor "alunoinf" para "RenanOfugi", com o email "renangyn2010@hotmail.com". | |
# Renomear um arquivo e manter o seu histórico intacto (renomeia em todos os commits no histórico): | |
# Código reusado de: | |
# http://stackoverflow.com/a/15135004 | |
git filter-branch --tree-filter 'if [ -f old ]; then mkdir dir && mv old dir/new; fi' HEAD | |
# Ou... exemplo: | |
git filter-branch -f --tree-filter 'if [ -f "Plano de Gerência de Configuração.md" ]; then mv "Plano de Gerência de Configuração.md" "Plano-de-Gerência-de-Configuração.md"; fi' HEAD |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment