Header Ads

Header ADS

Como remover um commit do Github

 

Se você acidentalmente cometeu algo que não deveria ter feito e enviou para o Github, ainda existem maneiras de deletar ou modificar. Normalmente, você não quer mexer com o histórico do Git, mas em alguns casos pode ser seguro quando feito de maneira adequada.

Não faça isso se puder evitá-lo

Remover commits do histórico do Git geralmente é uma má ideia. O Git deve rastrear todas as versões dos seus arquivos e sempre há alternativas para exclusão, como git revert, que manterá o histórico intacto.

Uma vez que está em um repositório remoto, como o Github, é muito mais difícil se livrar totalmente do commit. Isso ocorre porque qualquer outra pessoa que usar o repo terá sua própria cópia local desse repo, e a exclusão forçada de um commit fará com que eles fiquem fora de sincronia.

No entanto, ainda existem alguns motivos para fazer isso — talvez você tenha enviado dados privados acidentalmente para um repositório público, que ainda estaria visível no histórico, não importa o que você faça . Isso causará alguns problemas para seus colegas de trabalho, mas mesmo neste caso, é possível com um empurrão forçado.

Correção de confirmações localmente

Se você está trabalhando localmente e ainda não enviou suas alterações para o Github ainda, pode redefinir ou modificar com segurança os commits que não estão remotamente. O Git rastreia seu diretório local, organiza mudanças internamente e mantém um histórico do Git. Tudo isso é sincronizado com o controle remoto, mas apenas ao executar push / pull. O Github não se preocupa com o estado do seu repo até que você o envie.

Publicidade

Se você acabou de cometer um erro ao enviar arquivos, você pode fazer um soft reset e fazer um novo commit. Na verdade, isso é comum e útil se você deseja mesclar vários commits em um, chamado de “ squashing. ” Se você quiser descartar completamente as alterações, também pode fazer isso (com um --hard reset).

Se você ainda não enviou para o Github, você pode reverter o commit mais recente com uma reinicialização suave, que não afeta seus arquivos locais de forma alguma, mas faz com que você nunca faça commit das alterações no Git em primeiro lugar.

 git reset --Soft HEAD ~ 

Se você deseja apenas adicionar um novo arquivo / alteração ao commit mais recente, o Git tem um sinalizador integrado para fazer exatamente isso:

 git commit --amend --no-edit 

Revertendo (Github seguro)

Se você quiser desfazer as alterações de um commit que você já enviou ao Github, a maneira segura de fazer isso é revertendo. A reversão irá gerar uma “ confirmação oposta, ” que basicamente desfará todas as alterações de um commit específico. Se você adicionou uma linha, ela é removida e, se você excluiu um arquivo, ela é adicionada novamente.

Isso é seguro porque não muda o histórico, apenas adiciona um novo histórico sobre ele. Você pode enviar o commit de reversão para o Github e fazer com que seus colegas de trabalho executem git pull para obter as atualizações.

Primeiro, execute git log para obter uma lista de commits:

Em seguida, copie o hash SHA1 e reverta o commit:

 git revert 62ff517cc7c358eaf0bffdebbbe1b38dea92ba0f 

Forçar redefinição (inseguro)

Se você realmente deseja remover um commit, o método para fazer isso é removê-lo localmente e então forçar o envio para o Github. Uma vez que isso é muito perigoso e pode bagunçar os repositórios locais de seu colega de trabalho, se ainda quiser, você pode ter que desativar a proteção forçada de ramificação por push nas configurações de repositório do Github:

Publicidade

Então, você pode remover o commit localmente, o que é mais fácil se for o último commit:

 git reset --Soft HEAD ~ 

Você também pode fazer um rebase interativo, que é útil se o commit não for o mais recente. Se o commit foi, por exemplo, 12 commits atrás, você pode rebase a partir de então, remover o commit ofensivo e salvar.

 rebase git -i HEAD ~ 12 

Assim que seu repositório local estiver funcionando, você pode forçar o envio para o Github.

 git push origin master --force 

Certifique-se de que seu repo esteja atualizado! Se o branch remoto tiver alterações que você não tem, elas serão substituídas por este push.

Você pode querer coordenar isso com os membros da sua equipe, já que pode ter que fazer um ping e dizer a eles para executar uma busca e redefinir:

 git fetch git reset origin / master --soft 

Movendo um commit para um ramo diferente

Se você acidentalmente se comprometeu com o branch errado e deseja remover o commit e movê-lo para o branch correto, existem ferramentas no Git para lidar com isso. Você pode ler nosso guia para mover commits para saber mais, mas os mesmos princípios se aplicam — se você precisar remover completamente um commit, você deve forçar a redefinição. Se não houver problemas com a reversão, você pode simplesmente reverter e selecionar.

Nenhum comentário

Tecnologia do Blogger.