Como é git revert
usado?
Isso pode soar como uma pergunta duplicada, mas quando as pessoas perguntam, a resposta é frequentemente, usar git reset
como por Reverter para um commit por um hash SHA no Git?
Então, quando alguém pergunta como usar, as git reset
pessoas respondem dizendo que você deve usar git revert
conforme Git - como fazer rollback
Antes que você perceba, 8 pessoas diferentes apareceram com suas próprias maneiras únicas de salvar a bunda do OP, tudo isso passando por cima da sua cabeça.
Então, vamos tentar cumprir o briefing e escrever um guia para leigos git revert
.
Um cenário: você se comprometeu duas vezes a dominar e é ruim. Você pressionou e outras pessoas tiveram suas mudanças ruins.
Você quer desfazer isso. Não é algo que você pode desfazer manualmente no código, digamos que algum assistente ou gerenciador de pacotes mudou toneladas de coisas por todo o lugar - você só quer colocar tudo de volta como antes.
É disso que trata o controle de origem. Tenho certeza que é fácil.
Ok, você vai usar, git revert
mas como?
E depois de correr git revert
, você tem que fazer outra coisa depois? Você tem que confirmar as alterações feitas ou reverter diretamente para o repo ou o quê ??
Obviamente, você precisará empurrar novamente e provavelmente anunciar sua coragem para o time.
git revert -n <commitToRevet>
ougit revert --no-commit <commitToRevet>
Use git revert assim:
git revert <insert bad commit hash here>
git revert
cria um novo commit com as mudanças que são revertidas.git reset
apaga seu histórico do git em vez de fazer um novo commit.As etapas a seguir são as mesmas de qualquer outro commit.
fonte
A razão
reset
erevert
tendem a aparecer muito nas mesmas conversas é porque diferentes sistemas de controle de versão os usam para significar coisas diferentes.Em particular, as pessoas que estão acostumadas com SVN ou P4 e que desejam descartar alterações não confirmadas em um arquivo, muitas vezes
revert
procuram antes de serem informadas do que realmente desejamreset
.Da mesma forma, o
revert
equivalente em outros VCSes é freqüentemente chamadorollback
ou algo semelhante - mas "rollback" também pode significar "Eu quero descartar completamente os últimos commits", o que é apropriado,reset
mas nãorevert
. Portanto, há muita confusão em que as pessoas sabem o que querem fazer, mas não têm certeza de qual comando devem usar para isso.Quanto às suas reais dúvidas sobre reverter ...
git revert first-bad-commit..last-bad-commit
Por padrão,
git revert
solicita uma mensagem de confirmação e, em seguida, confirma os resultados. Isso pode ser substituído. Cito a página de manual :Em particular, por padrão, ele cria um novo commit para cada commit que você está revertendo. Você pode usar
revert --no-commit
para criar mudanças revertendo todos eles sem comprometer essas mudanças como commits individuais, então comprometa-se em seu lazer.fonte
git revert first-bad-commit..last-bad-commit
: Eu acho que isso deveria sergit revert parent-of-first-bad-commit..last-bad-commit
.A questão é bastante antiga, mas reverter ainda confunde as pessoas (como eu)
Como um iniciante, depois de algumas tentativas e erros (mais erros do que tentativas), tenho um ponto importante:
git revert
requer o id do commit que você deseja remover mantendo-o em seu históricogit reset
requer o commit que você deseja manter e, consequentemente, removerá do histórico qualquer coisa depois disso.Ou seja, se você usar
revert
com o primeiro id de commit, você se encontrará em um diretório vazio e um commit adicional no histórico, enquanto com reset seu diretório será .. revertido para o commit inicial e seu histórico será como se os últimos commits nunca aconteceram.Para ser ainda mais claro, com um log como este:
Usar
git revert cb76ee4
irá, por padrão, trazer seus arquivos de volta para 01b56c6 e irá adicionar mais um commit ao seu histórico:git reset 01b56c6
em vez disso, trará seus arquivos de volta para 01b56c6 e limpará qualquer outro commit depois disso de seu histórico:Eu sei que estes são "a base", mas foi bastante confuso para mim, ao executar o
revert
primeiro id ('primeiro commit') eu esperava encontrar meus arquivos iniciais, demorou um pouco para entender que se você precisar de seus arquivos de volta como 'primeiro commit' você precisa usar o próximo id.fonte
Eu reverti alguns commits executando 'git revert commit id' como:
Em seguida, fui solicitado a confirmar a reversão (assim como você faria ao executar 'git commit'). Meu programa de terminal padrão é o Vim, então executei:
Finalmente, empurrei a mudança para o repositório com:
fonte