Excluir commit do Git mesmo depois de um rebase #1431
Replies: 6 comments
-
O rebase nunca remove os commits de fato, o git é como se fosse uma lista encadeada (na real é um grafo orientado, mas vamos manter as coisas simples), um commit sempre aponta pro commit anterior e o próximo, o rebase na realidade apenas muda as referências dos commits. Então o que acontece é que existem commits que ficam no limbo, pois nenhum outro commit aponta pra ele, o rebase meramente reorganiza a história, ele nunca deleta nada. E sim, dá pra chegar neles novamente usando git reflog. |
Beta Was this translation helpful? Give feedback.
-
Entendi, eu imaginei a ideia de "limbo" mesmo, mas nunca pensei que seria possível chegar neles novamente, muito menos um link tão antigo funcionar. Eu pensava que talvez o Git tivesse um tipo de Garbage Collector limpando esse limbo de tempos em tempos. Interessante saber disso agora, valeu pela ajuda! Inclusive eu perguntei pro support do Git, já que algumas vezes, algumas informações sigilosas foram removidas usando um rebase, e agora sei que não é tão seguro assim. Se eles responderem algo que não foi citado aqui, eu vou postar aqui como resposta. |
Beta Was this translation helpful? Give feedback.
-
É possível deletar informações sensíveis usando o Git BFG, que de fato ele reescreve(violentamente) a história de um repo. Sobre GC, o git possui um sim, mas provavelmente não teve ter dado o tempo necessário para ele remover os commits sem referências(o padrão é ele fazer o gc de 90 dias em 90 dias). |
Beta Was this translation helpful? Give feedback.
-
Acho que ele tava se referindo ao GitHub não apagar os commits no limbo. |
Beta Was this translation helpful? Give feedback.
-
Então @felipemfp, o Github puxa os commits e todas as informações do git mesmo, ele por si só nunca salva nada, tanto que se tu deletar a pasta |
Beta Was this translation helpful? Give feedback.
-
Tem certeza? Por que se fosse assim não poderia acessar o commit diretamente pela url, mesmo depois do force push. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Olá pessoal,
Sabemos que o Git guarda a história de tudo, e uma das formas de "apagar"a história é o rebase. Existe inclusive uma grande discussão de quando usar um rebase ou um merge exatamente pelo fato do rebase mudar a história de um repositório.
Algum tempo atrás eu fiz um rebase para limpar commits como "fix" ou "fix do fix", tudo ocorreu bem, porém hoje apagando emails antigos vi um email com um link para um desses commits, e para minha surpresa ele funcionava, e o "fix" estava lá.
O git nunca realmente remove esses commits depois de um rebase? E outra dúvida, tem como chegar nesse commit sem ter o link em mãos? Eu tentei, mas não achei nenhum registro dele na interface ou por linha de código.
Beta Was this translation helpful? Give feedback.
All reactions