[{"data":1,"prerenderedAt":302},["ShallowReactive",2],{"blog-pt-version-history-is-not-a-backup":3},{"id":4,"title":5,"body":6,"category":265,"cover":266,"coverAlt":266,"description":267,"draft":268,"extension":269,"faq":270,"image":283,"keywords":284,"meta":290,"navigation":291,"ogTitle":292,"path":293,"published":294,"seo":295,"stem":296,"tldr":297,"updated":294,"__hash__":301},"blog_pt\u002Fblog\u002Fversion-history-is-not-a-backup.md","O histórico de versões não é backup. Ele não desfaz um delete.",{"type":7,"value":8,"toc":253},"minimark",[9,13,16,24,29,32,35,38,42,45,48,51,55,58,133,139,142,146,149,152,168,171,175,178,181,184,188,191,196,205,208,216,220,240],[10,11,12],"p",{},"Alguma coisa quebrou, então você fez o mais sensato. Abriu o histórico de\nversões no Lovable ou no Bolt, achou a versão desta manhã e clicou em restaurar.\nO app voltou exatamente como estava.",[10,14,15],{},"Os dados não.",[10,17,18,19,23],{},"Aqui está a parte em que as pessoas tropeçam: ",[20,21,22],"strong",{},"o seu código e os seus dados são\ndois sistemas separados, e só um deles tem botão de desfazer."," O seu builder\nguarda a planta do seu app. O seu banco de dados guarda o que tem dentro. O\nhistórico de versões reconstrói a planta com perfeição, até o último detalhe, e\nte devolve um prédio idêntico e vazio.",[25,26,28],"h2",{"id":27},"o-histórico-de-versões-do-meu-builder-faz-backup-do-meu-banco-de-dados","O histórico de versões do meu builder faz backup do meu banco de dados?",[10,30,31],{},"Não. Ele salva o seu código, e os seus dados moram em outro lugar completamente\ndiferente.",[10,33,34],{},"Lovable, Bolt, v0, Replit, Cursor e os demais mantêm todos um histórico dos\narquivos do seu projeto: suas páginas, seus componentes, sua lógica, seu visual.\nIsso é a planta. Restaurar uma versão reescreve esses arquivos como estavam no\ndia que você escolheu.",[10,36,37],{},"Seu banco de dados é outro serviço, quase sempre o Supabase, numa conta só dele.\nNada no histórico do seu projeto entra ali. A restauração não tem opinião\nnenhuma sobre os seus dados porque não consegue enxergá-los.",[25,39,41],{"id":40},"por-que-o-seu-código-e-os-seus-dados-ficam-em-lugares-diferentes","Por que o seu código e os seus dados ficam em lugares diferentes",[10,43,44],{},"Porque os seus dados precisam sobreviver ao que o seu código faz o tempo todo,\nque é mudar.",[10,46,47],{},"Seu código é reconstruído toda vez que você publica. Se os pedidos dos seus\nusuários morassem lá dentro, sumiriam toda vez que você consertasse um botão.\nPor isso os dois são mantidos separados, de propósito: o código é substituível e\nos dados não são, e é por isso que quem os versiona são ferramentas diferentes.",[10,49,50],{},"O preço dessa separação é o assunto deste artigo. Toda ferramenta que versiona\num dos dois é cega para o outro. Seu builder não consegue trazer uma tabela de\nvolta, e o seu banco não consegue trazer de volta uma página quebrada.",[25,52,54],{"id":53},"o-que-acontece-de-verdade-quando-você-volta-atrás","O que acontece de verdade quando você volta atrás",[10,56,57],{},"Suas telas voltam para como estavam. Seus dados não saem do lugar.",[59,60,61,74],"table",{},[62,63,64],"thead",{},[65,66,67,71],"tr",{},[68,69,70],"th",{},"O quê",[68,72,73],{},"Ao voltar o código",[75,76,77,86,93,105,115,125],"tbody",{},[65,78,79,83],{},[80,81,82],"td",{},"Páginas, componentes, visual",[80,84,85],{},"Restaurado",[65,87,88,91],{},[80,89,90],{},"A lógica do seu app e as correções dela",[80,92,85],{},[65,94,95,98],{},[80,96,97],{},"Uma tabela que alguém apagou",[80,99,100],{},[101,102,104],"key-verdict",{"type":103},"danger","Continua apagada",[65,106,107,110],{},[80,108,109],{},"Linhas que um script sobrescreveu",[80,111,112],{},[101,113,114],{"type":103},"Continuam sobrescritas",[65,116,117,120],{},[80,118,119],{},"Uma coluna que uma migração removeu",[80,121,122],{},[101,123,124],{"type":103},"Continua removida",[65,126,127,130],{},[80,128,129],{},"Arquivos que seus usuários enviaram",[80,131,132],{},"Sem mudança em nenhuma direção",[134,135],"diagram",{"alt":136,"caption":137,"src":138},"Três passos em fila. Primeiro, o código na versão cinco com seis linhas de dados, com certo. Depois o mesmo código com as seis linhas sumidas, com xis. Por fim o código de volta na versão três e com certo, com as seis linhas ainda sumidas e ainda com xis.","O rollback cai no código e em mais nada. Voltar a planta para a versão três não repõe as linhas.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Frollback-timeline-1600x680.png",[10,140,141],{},"A linha da migração é a que mais surpreende. Uma migração que você rodou contra\no seu banco já aconteceu; ela mora no banco, não no seu repositório, e desfazer\no arquivo que a descrevia não muda nada.",[25,143,145],{"id":144},"onde-isso-morde-de-verdade","Onde isso morde de verdade",[10,147,148],{},"Nos dez minutos depois de um erro, quando você vai procurar o desfazer e\ndescobre que não tem.",[10,150,151],{},"Os formatos que isso assume são bem comuns:",[153,154,155,159,162,165],"ul",{},[156,157,158],"li",{},"Um delete no editor de tabelas do Supabase que pegou mais linhas do que você\nqueria.",[156,160,161],{},"Uma migração assistida por IA que removeu uma coluna para fazer sumir um erro\nde tipo.",[156,163,164],{},"Um script de seed ou de reset apontado para o projeto em produção em vez de um\nde teste.",[156,166,167],{},"Uma limpeza do que parecia dado de teste e era a conta real de alguém.",[10,169,170],{},"Nada disso encosta numa única linha do seu código. Cada uma dessas coisas\nsobrevive inteira a um rollback, e é por isso que o rollback parece não ter\nfeito nada. Ele fez exatamente o que faz.",[25,172,174],{"id":173},"para-que-o-histórico-de-versões-serve-de-verdade","Para que o histórico de versões serve de verdade",[10,176,177],{},"Para bastante coisa, e vale dizer isso com clareza, porque a resposta não é\n\"para nada\".",[10,179,180],{},"Ele é um desfazer de verdade para problemas de verdade: uma mudança de design da\nqual você se arrependeu, uma publicação que quebrou uma página, uma edição da IA\nque reescreveu para pior uma tela que funcionava, uma funcionalidade que acabou\ndeixando o app mais difícil de usar. Tudo isso mora no seu código, e para isso\nele funciona exatamente como promete.",[10,182,183],{},"O problema é a suposição silenciosa de que o trabalho dele cobre tudo. Ninguém\nfaz essa suposição de propósito; é a que sobra quando ninguém te contou que são\ndois sistemas.",[25,185,187],{"id":186},"como-conseguir-um-desfazer-de-verdade-para-os-seus-dados","Como conseguir um desfazer de verdade para os seus dados",[10,189,190],{},"Você tem que colocar um lá. Ou seja, uma cópia do banco, tirada num horário,\nguardada em algum lugar que perder a conta não levaria junto.",[134,192],{"alt":193,"caption":194,"src":195},"Duas linhas do tempo. Na do código, uma seta volta sozinha do ponto mais recente para um anterior. Na do banco de dados, essa mesma seta só se fecha passando por um arquivo salvo.","As duas conseguem voltar. A diferença é que o desfazer do seu código veio junto com o builder, e o dos seus dados só existe se você mesmo colocar a cópia lá.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Ftwo-undo-paths-1600x600.png",[10,197,198,199,204],{},"Existem três jeitos de fazer isso, custam quantias e atenção diferentes, e cada\num deixa passar algo que os outros cobrem.\n",[200,201,203],"a",{"href":202},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Três formas de fazer backup de um banco Supabase","\npassa pelos três, incluindo o que quase todo mundo deveria ligar primeiro e o\nmotivo de ele não bastar sozinho.",[10,206,207],{},"É para isso que o Reeve Care também serve: cópias programadas do seu banco do\nSupabase, guardadas fora da sua conta do Supabase e conferidas antes de contarem\ncomo feitas. Conecte os seus buckets do Storage e os arquivos que os\nseus usuários enviaram vão junto, de modo que uma restauração devolve as linhas\ne as imagens para as quais elas apontam.",[10,209,210,211,215],{},"O que uma dessas cópias contém, e o que o botão realmente faz, está na ",[200,212,214],{"href":213},"\u002Fsupabase-backups","página\nde backups do Supabase",".",[25,217,219],{"id":218},"o-que-fazer-esta-semana","O que fazer esta semana",[221,222,223],"key-takeaways",{},[153,224,225,228,231,234,237],{},[156,226,227],{},"Descubra se alguma coisa está fazendo backup do seu banco agora. Não do seu código: do seu banco. Se a resposta demorar mais de um minuto para aparecer, a resposta é não.",[156,229,230],{},"Ligue o backup que o seu plano do Supabase inclui. Ele te protege dos seus próprios erros, que é exatamente a falha de que trata este artigo.",[156,232,233],{},"Guarde também uma cópia em outro lugar, porque um backup que mora dentro da conta não te ajuda se você perder a conta.",[156,235,236],{},"Faça backup dos arquivos enviados separadamente. Eles não estão nem no seu código nem no seu banco.",[156,238,239],{},"Restaure uma cópia num projeto descartável, para que a primeira vez que você ler esse arquivo não seja o dia em que precisa dele.",[10,241,242,243,247,248,252],{},"Antes de fechar esta aba, abra o seu projeto no Supabase e veja se os backups\nestão ligados. Essa única conferida é todo o trabalho de hoje. O\n",[200,244,246],{"href":245},"\u002Fchecklist","checklist de segurança de 10 minutos"," cobre isso junto com o resto\ndo que vale confirmar num app recém-lançado, e o\n",[200,249,251],{"href":250},"\u002Fis-your-supabase-app-safe","guia de segurança do Supabase"," passa pelo que mais\ncostuma ficar aberto.",{"title":254,"searchDepth":255,"depth":255,"links":256},"",3,[257,259,260,261,262,263,264],{"id":27,"depth":258,"text":28},2,{"id":40,"depth":258,"text":41},{"id":53,"depth":258,"text":54},{"id":144,"depth":258,"text":145},{"id":173,"depth":258,"text":174},{"id":186,"depth":258,"text":187},{"id":218,"depth":258,"text":219},"Backups",null,"Lovable e Bolt guardam um histórico de versões do seu código. Seu banco de dados é um serviço à parte, e voltar atrás não traz os seus dados de volta.",false,"md",[271,274,277,280],{"q":272,"a":273},"Apaguei uma tabela sem querer. Consigo trazer de volta?","Só de um backup feito antes do delete, então a primeira coisa é descobrir se existe algum. Voltar o seu código não resolve, e o seu builder também não. Num plano pago do Supabase existem backups diários, e recuperação para um ponto no tempo se você adicionou. No plano gratuito não há nada automático. Veja o que você tem antes de mexer em qualquer outra coisa, porque alguns caminhos de volta ficam mais difíceis assim que dados novos começam a ser escritos por cima do buraco.",{"q":275,"a":276},"O Lovable faz backup do meu banco no Supabase?","O seu builder versiona os arquivos do seu projeto. Seu banco de dados é um serviço separado na sua própria conta do Supabase, e nada no histórico do projeto entra ali. Builders ganham funcionalidades novas, então consulte a documentação do seu em vez de supor num sentido ou no outro, mas parta do princípio de que a resposta é não até ter lido que é sim.",{"q":278,"a":279},"Meu histórico do Git é um backup?","Não, exatamente pelo mesmo motivo que o histórico de versões não é. O Git acompanha os arquivos com que o seu app é construído. Ele nunca viu uma única linha dos seus dados e não consegue devolver nenhuma. Um repositório e um banco de dados são coisas diferentes que por acaso se chamam as duas \"o seu projeto\".",{"q":281,"a":282},"Meus dados estão todos aí. Preciso fazer alguma coisa hoje?","Hoje é o dia mais barato em que você vai montar isso, porque os dados são poucos e o que importa é o hábito existir antes de precisar dele. As perdas que doem raramente são dramáticas. São um comando digitado errado durante um conserto de madrugada, num projeto com usuários reais o suficiente para recomeçar não ser uma opção.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",[285,286,287,288,289],"historico de versoes lovable","historico de versoes backup banco de dados","recuperar tabela apagada supabase","voltar codigo restaurar dados","recuperar dados app vibe coded",{},true,"O histórico de versões não é um backup do banco","\u002Fblog\u002Fversion-history-is-not-a-backup","2026-08-10",{"title":5,"description":267},"blog\u002Fversion-history-is-not-a-backup",[298,299,300],"O histórico de versões restaura o seu código. Ele nunca encosta no seu banco de dados, que é onde estão os seus usuários, o conteúdo deles e os pedidos deles.","Ou seja: uma tabela apagada, uma linha sobrescrita ou uma migração torta sobrevivem inteirinhas a um rollback.","Seu código já vem com um desfazer. Seus dados só têm um se você colocar um lá.","E1zepLfF-yuJHKIfowUGIiK3lxsaZ38KJZCOWqeraFU",1787826050914]