Pergunta

Eu "acidentalmente" empurrou um comprometem a GitHub.

É possível remover esta cometer?

Eu quero reverter meu repositório GitHub como era antes desta cometer.

Foi útil?

Solução

Nota: consulte alternativa para git rebase -i nos comentários abaixo -

git reset --soft HEAD^

Em primeiro lugar, remover a cometer em seu repositório local. Você pode fazer isso usando git rebase -i. Por exemplo, se é o seu último commit, você pode fazer git rebase -i HEAD~2 e eliminar a segunda linha dentro da janela do editor que aparece.

Em seguida, força impulso para GitHub usando git push origin +branchName --force

Git Magia Capítulo 5: Lições da História - E então Alguns para mais informações (ou seja, se você quiser remover commits mais velhos).

Oh, e se a sua árvore de trabalho é sujo, você tem que fazer um git stash primeiro, e depois um git stash apply depois.

Outras dicas

git push -f origin HEAD^:master

Isso deve "desfazer" o empurrão.

Para uma revert fácil se é apenas um erro (talvez você bifurcada um repo, em seguida, acabou empurrando para o original em vez de para um novo) aqui está uma outra possibilidade:

git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479

Obviamente troca em que o número para o número da submissão você quer voltar.

Tudo, desde então, vai ser excluído depois de empurrar novamente. Para fazer isso, o próximo passo seria:

git push --force
  1. git log para descobrir a cometer pretende reverter

  2. git push origin +7f6d03:master enquanto 7f6d03 é a cometer antes do erroneamente empurrou cometer. + era para force push

E é isso.

Aqui é um guia muito bom que resolve o seu problema, fácil e simples!

No caso de você gostaria de manter a mudanças após eliminação cometer:

Note-se que esta solução funciona se a comprometer-se a ser removido é o último comprometido.


1 - Cópia da referência cometer você gostaria de voltar a partir do log:

git log

2 - git reset à referência cometer:

 git reset <commit_ref>

3 - Stash / armazenar as alterações locais do errado cometer a usar mais tarde depois de empurrar para remoto:

 git stash

4 - Empurre as alterações ao repositório remoto, (-f ou --force):

git push -f

5 - Volte as alterações armazenadas para repositório local:

git stash apply

7 - No caso de você ter / novos arquivos untracked nas mudanças, você precisa adicioná-los para o git antes de cometer:

git add .

6 - Adicione o que alterações extras que você precisa, em seguida, cometer os arquivos necessários, (ou use um ponto em vez de afirmar cada nome de arquivo, para cometer todos os arquivos no repositório local '':

git commit -m "<new_commit_message>" <file1> <file2> ...

ou

git commit -m "<new_commit_message>" .

Você precisa limpar o cache para tê-lo completamente destruída. esta página de ajuda do git irá ajudá-lo. (Isso me ajudou) http://help.github.com/remove-sensitive-data/

Use git revert para reverter seu impulso.

git-revert - Reverter alguns commits existentes

git revert [--edit | --no-edit] [-n] [-m parent-number] [-s] <commit>...
git revert --continue
git revert --quit
git revert --abort

reverter as alterações que os patches relacionados introduzir e gravar algumas novas submissões que gravá-los. Isso requer sua árvore de trabalho para ser limpo (sem modificações da cabeça commit).

1. git reset HEAD^ --hard
2. git push origin -f

Este trabalho para mim.

Para excluir a cometer a partir do repositório remoto:

 git push -f origin last_known_good_commit:branch_name

A fim eliminar o commit do seu repositório local:

git reset --hard HEAD~1

ligação

Excluir a mais recente comprometer, mantendo o trabalho que você fez:

git reset --soft HEAD~1

Excluir a mais recente cometer, destruindo o trabalho que você fez:

git reset --hard HEAD~1

Encontre a especificação ref do commit você quer ser a cabeça de seu ramo no Github e use o seguinte comando:

git push origin +[ref]:[branchName]

No seu caso, se você quer apenas para voltar um commit, encontrar o início da ref para que cometem, digamos, por exemplo, é 7f6d03, eo nome do ramo que deseja alterar, digamos, por exemplo, é mestre, e faça o seguinte:

git push origin +7f6d03:master

O personagem mais é interpretado como --force, que será necessário uma vez que você está reescrevendo a história.

Note que toda vez que você --force um commit você poderia reescrever a história de outros povos que fundir o seu ramo. No entanto, se você pegar o problema rapidamente (antes que alguém se funde seu ramo), você não terá quaisquer problemas.

Você precisa conhecer o seu cometer hash do commit você quiser reverter para. Você pode obtê-lo a partir de um GitHub URL como: https://github.com/your -organização / your-project / commits / master

Vamos dizer o hash do commit (onde você quer voltar a) é "99fb454" (versão longa "99fb45413eb9ca4b3063e07b40402b136a8cf264"), então tudo que você tem a fazer é:

git reset --hard 99fb45413eb9ca4b3063e07b40402b136a8cf264
git push --force

Executar este comando no seu terminal.

git reset HEAD~n

Você pode remover os últimos n commits, do local repo por exemplo CABEÇA ~ 2. Prossiga com push vigor git em seu repositório.

git push -f origin <branch>

Espero que isso ajude!

Para preservar a estrutura de ramificação e mesclagem é importante usar a opção --preserve-merges ao fazer o rebase:

git rebase --preserve-merges -i HEAD^^

Salvar suas alterações locais primeira em algum lugar no lado (backup)

Você pode navegar seus commits recentes, em seguida, selecione um commit de hash clicando em "Copie o SHA cheia" para enviá-lo para a área de transferência.

Se o seu último commit hash é, digamos g0834hg304gh3084gh (por exemplo)

Você tem que correr:

git push origin +g0834hg304gh3084gh:master

Usando o hash que você copiou anteriormente para torná-lo a "cabeça" de revisão.

Adicionar suas alterações locais desejados. Feito;)

Para GitHub

  • Redefinir seus commits (duro) em seu repositório local
  • Criar um novo ramo
  • Empurre o novo ramo
  • Excluir ramo VELHO (Adicione nova como o ramo padrão, se você está excluindo o branch master)

Se você deseja remover fazer rebase interativo,

git rebase -i HEAD~4

4 represents total number of commits to display count your commit andchange-lo em conformidade

e apagar cometer você quer da lista ...

excepto por mudanças Ctrl + X (ubuntu) ou : wq (centos)

segundo método, fazer revert,

git revert 29f4a2 #your commit ID

este reverterá específica cometer

Não é muito bom para re-escrever a história. Se usarmos git revert <commit_id>, ele cria um ambiente limpo reverso-commit do referido cometer id.

Desta forma, a história não é re-escrito, em vez disso, todo mundo sabe que tem havido um revert.

Adicionar / Remover arquivos para fazer as coisas da maneira que quiser:

git rm classdir
git add sourcedir

Em seguida, alterar a cometer:

git commit --amend

O anterior, errônea cometer será editada para refletir o novo estado índice - em outras palavras, vai ser como você nunca cometeu o erro em primeiro lugar

Note que você só deve fazer isso se você ainda não empurrou. Se você empurrou, então você vai ter que comprometer uma correção normalmente.

Na GitHub desktop você pode simplesmente clique direito a cometer e revertê-lo, o que criará um novo commit que desfaz as alterações.

O acidental comprometer ainda estará na sua história (que pode ser um problema se, por exemplo, que você tenha cometido acidentalmente uma chave de API ou senha) mas o código será revertida.

Esta é a opção mais simples e fácil, a resposta aceita é mais abrangente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top