Existe uma maneira de reverter uma confirmação para que minha cópia local mantenha as alterações feitas nessa confirmação, mas elas se tornem alterações não confirmadas na minha cópia de trabalho? A reversão de uma confirmação leva você à confirmação anterior - quero manter as alterações feitas, mas as comprometi na ramificação errada.
Isso não foi enviado, apenas confirmado.
git reset --soft
egit reset --mixed
tanto fazer isso (um pouco diferente), ver git-resetRespostas:
Existem várias maneiras de fazer isso, por exemplo:
caso você não tenha enviado o commit publicamente ainda:
É isso aí, suas alterações de confirmação estarão no seu diretório de trabalho, enquanto que a ÚLTIMA confirmação será removida do seu ramo atual. Veja git reset man
Caso você tenha pressionado publicamente (em um ramo chamado 'master'):
reverter confirmar normalmente e empurre
agora, se você deseja fazer essas alterações conforme as alterações locais em sua cópia de trabalho ("para que sua cópia local mantenha as alterações feitas nessa confirmação") - basta reverter a confirmação de reversão com a
--no-commit
opção:Criei um pequeno exemplo: https://github.com/Isantipov/git-revert/commits/master
fonte
reset
comando mencionado é dizer "suavemente" redefinir para 1 rev antes da cabeça, o que preserva todas as alterações locais. isso não foi imediatamente evidente para mim no SourceTree. apenas certifique-se de que você está redefinição suave ao rev anterior, não o rev você está tentando redefinir"Already up to date"
ao fazer a mesclagem.Se você pressionou as alterações, poderá
undo
fazê-lo e mover os arquivos de volta ao estágio sem usar outra ramificação.Ele criará um arquivo de patch que contém as últimas alterações de ramificação. Em seguida, reverta as alterações. E, finalmente, aplique os arquivos de correção na árvore de trabalho.
fonte
rm patch
tambémPara o caso: "Isso não foi enviado, apenas confirmado ". - se você usa o IntelliJ (ou outro IDE JetBrains) e ainda não efetuou alterações, pode fazer a seguir.
Feito.
Isso irá "descomprimir" suas alterações e retornar seu status de git ao ponto anterior ao seu último commit local. Você não perderá nenhuma alteração feita.
fonte
git reset --soft "HEAD^"
Windows, aliás. :)Comigo, isso acontece principalmente quando pressiono as alterações no ramo errado e percebo mais tarde. E seguir os trabalhos na maioria das vezes.
fonte
2020 maneira simples:
Confirme o hash do último commit que você deseja manter.
fonte
git checkout branch_name
git merge --abort
status git
git reset --hard origin / branch_name
fonte