Eu encontrei um problema aqui: eu tinha uma ramificação específica do problema 28s
no Git, que eu mesclava na develop
ramificação geral . Acontece que eu tinha feito isso muito rápido, então usei o git-revert para desfazer a mesclagem. Agora, porém, chegou a hora de fundir 28s
em develop
, mas o comando git-merge vê a fusão original, e felizmente anuncia que tudo está bem e galhos já foram mescladas. O que eu faço agora? Criar um 'Revert "Revert" 28s -> develop ""' commit? Não parece ser uma boa maneira de fazer isso, mas não consigo imaginar outra no momento.
Como é a estrutura da árvore:
git
git-merge
git-revert
Toms Mikoss
fonte
fonte
Respostas:
Você precisa "reverter a reversão". Dependendo de como o original foi revertido, pode não ser tão fácil quanto parece. Veja o documento oficial sobre este tópico .
permitir:
fonte
Vamos supor que você tenha essa história
Onde A, B falhou, confirma e W - reverte M
Portanto, antes de começar a corrigir os problemas encontrados, faço uma escolha cereja do W com o meu ramo
Então eu reverto W commit no meu branch
Depois eu posso continuar consertando.
A história final pode parecer com:
Quando eu envio um PR, ele mostra claramente que o PR está desfazendo a reversão e adiciona alguns novos commit.
fonte
Para reverter a reversão sem estragar demais o fluxo de trabalho:
Agora, sua ramificação de recursos poderá ser mesclada normalmente quando você estiver pronto para isso. A única desvantagem aqui é que você terá alguns compromissos adicionais de mesclagem / reversão em seu histórico.
fonte
Para reverter uma reversão no GIT:
fonte
Em vez de usar,
git-revert
você poderia ter usado este comando nodevel
ramo para jogar fora (desfazer) a confirmação de mesclagem incorreta (em vez de apenas revertê-la).Isso também ajustará o conteúdo do diretório de trabalho de acordo. Cuidado :
git-reset
. Todas as confirmações após a que você especificar comogit reset
argumento desaparecerão!Eu recomendo estudar a
git-reset
página de manual cuidadosamente antes de tentar isso.Agora, após a redefinição, você poderá aplicar novamente as alterações
devel
e, em seguida,Esta será uma verdadeira fusão de
28s
emdevel
como o inicial (que agora é apagado da história do git).fonte
reset --hard
epush origin
. Lembre-se também de que um empurrão forçado na origem pode realmente prejudicar PRs abertos no GitHub.Acabei de encontrar este post ao enfrentar o mesmo problema. Acho muito assustador fazer redefinições difíceis, etc. Acabarei excluindo algo que não quero e não conseguirá recuperá-lo.
Em vez disso, verifiquei o commit para o qual o ramo retornaria, por exemplo
git checkout 123466t7632723
. Em seguida, convertido em um ramogit checkout my-new-branch
. Eu apaguei o ramo que não queria mais. Claro que isso só funcionará se você conseguir jogar fora o galho que você errou.fonte
git reflog
protegerá em uma reinicialização definitiva por alguns meses, caso você descubra mais tarde que precisa dos commits perdidos. O reflog é limitado ao seu repositório local.Eu sugiro que você siga as etapas abaixo para reverter uma reversão, digamos SHA1.
Agora crie PR para a filial
users/yourname/revertOfSHA1
fonte
Nesse ponto, você terá uma ramificação limpa de 'desenvolvimento' na qual poderá mesclar seu recurso de braach como faz regularmente.
fonte