O que é controle de versão?
É março de 2006. São 2 da manhã, estou no terceiro ano da faculdade de ciência da computação e, amanhã de manhã, apresento meu primeiro projeto freelance da vida para um cliente importante.
Estou programando há 14 horas seguidas, então não lembro direito o que mudei que está causando isso.
Só sei que a camada de dados do app funcionava ontem (ou era anteontem?). Agora, em vez de cotações da bolsa, aparece um monte de erros na minha tela.
Tentei desfazer as alterações que levaram a essa bagunça, mas... é 2006, então minha IDE só consegue desfazer uns 5 minutos do meu código desleixado de madrugada.
Minha mão está dormente de tanto apertar Ctrl+Z. Se eu apertar a tecla errada sem querer agora, não vou conseguir refazer as alterações de volta e vou perder ainda mais trabalho.
...a não ser que meu PC com Windows 98 trave do nada antes e corrompa todos os meus arquivos abertos.
Estou desesperado. Minha única esperança é o backup que fiz ontem... ou foi semana passada? Estava num pen drive? Ou será que num CD?
Além disso, nenhum deles tem o código mais recente, então não consigo descobrir quais alterações deram início ao problema.
Opa, é o mesmo disquete 💾 em que salvei o backup ontem! É um milagre!
Espere, primeiro preciso extrair o arquivo compactado do disquete.
Não consigo recuperar meus arquivos do backup! Será que o ímã dentro da caixa de som corrompeu o disquete?
Acho que é isso. Estou completamente ferrado.
Hoje é até divertido pensar nisso, mas na época fiquei arrasado. No fim, encontrei a causa raiz do problema no meu código e consertei tudo.
Infelizmente, foi tarde demais. Estourei o prazo e perdi o cliente. Mas aprendi a lição do jeito difícil.
Um é um software que registra as alterações nos arquivos ao longo do tempo. Você pode restaurar uma versão mais antiga, voltar um arquivo ou o projeto inteiro a uma versão anterior, comparar a versão atual com a antiga, ver quem fez cada alteração e quando, e muito mais.
Hoje, o controle de versão aparece integrado de forma transparente em vários apps. Por exemplo, quando você edita um documento no Google Docs, pode ver o histórico de alterações e voltar o documento para uma versão anterior. O mesmo vale para os arquivos no Dropbox e em muitos outros serviços. Nesses apps, o versionamento acontece automaticamente, e você nem precisa pensar nele.
Mas também existem sistemas de controle de versão independentes, como o Git, o Mercurial ou o Subversion, em que você tem um controle mais explícito e granular sobre o processo de versionamento.
Esses sistemas são especialmente úteis em projetos complexos, como softwares, sites ou conjuntos de dados. Projetos grandes têm muitas partes que dependem umas das outras. Muitas vezes, o código só funciona com versões específicas de bibliotecas ou de outros componentes, e atualizar uma parte pode quebrar o resto. É aí que os sistemas de controle de versão brilham.
Faça o curso do jeito que ele foi pensado: progressão em pequenas doses, ordem linear e focada, desbloqueio gradual das entradas da Gitopedia. Continue com o Git de verdade no VS Code/Cursor/Antigravity/Windsurf a qualquer momento.
mas precisa de login