#Git desfaz várias posturas de commits mesclados
Mesclar ramificações é uma operação comum no Git, mas às vezes o commit errado pode ser mesclado acidentalmente na ramificação principal. Neste momento, você precisa desfazer o commit mesclado e restaurar o estado correto. Este artigo apresentará como desfazer o commit mesclado no Git, independentemente de o registro do commit ser o mais recente ou um intermediário.
Desfazer o último commit mesclado
Se você quiser desfazer o último merge commit, você pode usar git revert
o comando para criar um novo commit que desfaça as alterações erradas.
Primeiro, use
git log
o comando para visualizar o histórico de confirmação para localizar a confirmação de mesclagem mais recente.
$ git log
commit c3d2e9a4e2a1e285ff4d8f06e01d4e3f19b532ea (HEAD -> master)
Author: Hanmeimei <[email protected]>
Date: Fri Jun 30 15:26:43 2023 +0800
Incorrect merge commit
commit 3e5fb8a7b631eb6492ef32e28a813084d4d3de2b
Author: Lilei <[email protected]>
Date: Thu Jun 29 18:20:56 2023 +0800
Correct commit
...
No exemplo acima, você pode ver o último commit de mesclagem com bugs ( Incorrect merge commit
).
Use
git revert
o comando para desfazer o merge commit e criar um novo commit para reverter para o estado correto.
$ git revert c3d2e9a4e2a1e285ff4d8f06e01d4e3f19b532ea
O Git criará automaticamente um novo commit, desfazendo o merge commit errado.
Valide o novo histórico de confirmação com
git log
o comando ou para confirmar que as alterações incorretas foram desfeitas.git show
$ git log
commit b254d0f063b4ab4e7b78fb42015e0c55e0e98712 (HEAD -> master)
Author: Hanmeimei <[email protected]>
Date: Fri Jun 30 15:46:28 2023 +0800
Revert "Incorrect merge commit"
This reverts commit c3d2e9a4e2a1e285ff4d8f06e01d4e3f19b532ea.
commit 3e5fb8a7b631eb6492ef32e28a813084d4d3de2b
Author: Lilei <[email protected]>
Date: Thu Jun 29 18:20:56 2023 +0800
Correct commit
...
Aqui você pode ver que um novo commit ( Revert "Incorrect merge commit"
) foi criado, o que desfaz o último commit de mesclagem incorreto.
Desfazer os últimos commits múltiplos mesclados
Se quiser desfazer vários commits da última mesclagem, você pode usar git reset
o comando para reverter para um commit. Aqui estão os passos:
Primeiro, use
git log
o comando para visualizar o histórico de confirmação e encontrar o valor de hash a ser revertido.
$ git log
commit c5b890eee2edf9a353ec6bba0543e41d2529a8f8 (HEAD -> master)
Author: Hanmeimei <[email protected]>
Date: Mon Jul 3 15:12:10 2023 +0800
Incorrect merge commit
commit 82bcf43083a4dc8c87091ebde4dd5374f0c6e274
Author: Hanmeimei <[email protected]>
Date: Mon Jul 3 15:11:54 2023 +0800
Incorrect merge commit2
commit 60a52b00d0ee2703156231e209e8aad115919aee
Author: Hanmeimei <[email protected]>
Date: Mon Jun 26 06:32:35 2023 +0000
Correct commit
...
Uma reversão para ( ) é necessária aqui Correct commit
.
Use
git reset
o comando para desfazer o merge commit e criar um novo commit para reverter para o estado correto.
$ git reset --soft 60a52b00d0ee2703156231e209e8aad115919aee // 暂存区
$ git reset --hard 60a52b00d0ee2703156231e209e8aad115919aee // HEAD 指向此次提交记录
$ git push origin HEAD --force // 强制推送远端
Nota: As modificações após este envio não são reservadas e git status
não há registro de visualização do espaço de trabalho.
Por fim, verifique o histórico de confirmação com
git log
o comando ougit show
para confirmar que as alterações incorretas foram desfeitas.
$ git log
commit 60a52b00d0ee2703156231e209e8aad115919aee (HEAD -> master)
Author: Hanmeimei <[email protected]>
Date: Mon Jun 26 06:32:35 2023 +0000
Correct commit
...
Em caso de exclusão acidental, os seguintes métodos podem ser usados para recuperar:
$ git reset --hard 82bcf43083a4dc8c87091ebde4dd5374f0c6e274 // 误删的哈希值
HEAD is now at 82bcf4308 feat: Incorrect merge commit2
$ git push origin HEAD --force // 强制推送远端
Desfazer uma confirmação de mesclagem intermediária
Se você deseja desfazer um envio de mesclagem no meio, pode usar git revert
o comando e especificar o valor de hash de confirmação a ser desfeito.
Primeiro, use
git log
o comando para visualizar o histórico de confirmação e localizar a confirmação de mesclagem intermediária que deseja desfazer.
$ git log
commit 3e5fb8a7b631eb6492ef32e28a813084d4d3de2b (HEAD -> master)
Author: Lilei <[email protected]>
Date: Wed Jun 21 12:00:00 2023 +0000
Correct commit
commit a1b2c3d4e5f6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
Author: Hanmeimei <[email protected]>
Date: Fri Jun 18 12:00:00 2023 +0000
Incorrect merge commit
...
Um commit ( ) de mesclagem incorreto intermediário pode ser visto aqui Incorrect merge commit
.
Em seguida, use
git revert
o comando para desfazer o merge commit e criar um novo commit para reverter para o estado correto.
$ git revert a1b2c3d4e5f6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
O Git criará automaticamente um novo commit, desfazendo o merge commit errado.
Por fim, use o comando
git log
ougit show
para verificar o novo histórico de confirmação e confirme se as alterações incorretas foram desfeitas.
$ git log
commit b254d0f063b4ab4e7b78fb42015e0c55e0e98712 (HEAD -> master)
Author: Hanmeimei <[email protected]>
Date: Mon Jun 28 12:10:00 2023 +0000
Revert "Incorrect merge commit"
This reverts commit a1b2c3d4e5f6a7b8c9d0e1f2g3h4i5j6k7l8m9n0.
commit 3e5fb8a7b631eb6492ef32e28a813084d4d3de2b
Author: Lilei <[email protected]>
Date: Wed Jun 21 12:00:00 2023 +0000
Correct commit
commit a1b2c3d4e5f6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
Author: Hanmeimei <[email protected]>
Date: Fri Jun 18 12:00:00 2023 +0000
Incorrect merge commit
...
Você pode ver que o envio anterior ainda permanecerá em git log
, e esta revogação será usada como um novo envio ( Revert "Incorrect merge commit"
).
Perceber
Certifique-se sempre de entender as consequências antes de executar uma operação de desfazer e crie backups ou salve dados importantes antes de fazer qualquer alteração.
- FIM -
Sobre Qi Wu Troupe
Qi Wu Troupe é a maior equipe de front-end do 360 Group e participa do trabalho dos membros do W3C e ECMA (TC39) em nome do grupo. Qi Wu Troupe atribui grande importância ao treinamento de talentos. Existem várias direções de desenvolvimento, como engenheiros, palestrantes, tradutores, pessoas de interface de negócios e líderes de equipe para os funcionários escolherem e complementados pelo fornecimento de treinamento técnico, profissional, geral e de liderança correspondente .claro. Qi Dance Troupe dá as boas-vindas a todos os tipos de talentos excepcionais para prestar atenção e se juntar ao Qi Dance Troupe com uma atitude aberta e em busca de talentos.