Traduzido do en usando google translate
Vamos falar sobre sistemas de controle de versão (VCS).
O que é? O que faz? Qual devo usar?
Um sistema de controle de versão é um software projetado para ajudá-lo a manter sua sanidade enquanto altera muitos arquivos e mantém o controle de quem alterou o quê e quando. Embora seja geralmente usado por desenvolvedores de software, pode ser usado para manter versões de qualquer tipo de arquivo.
A maioria dos VCS que usei tinha uma estrutura de gráfico em forma de árvore para armazenar as alterações do arquivo em etapas normalmente chamadas de commits. Esses commits são um instantâneo de seus arquivos naquele momento. Cada vez que você fizer um instantâneo, seu VCS irá armazená-lo para que mais tarde você possa reverter para aquele estado de arquivo ou compará-lo com algum outro instantâneo.
Embora hoje em dia o VCS mais famoso seja o git, ele não é o único.
VCS comumente conhecidos são:
Cada um tem suas peculiaridades, mas como tenho experiência principalmente no git, falarei apenas sobre isso em posts posteriores, mas não hoje.
Hoje vou contar como acabei descobrindo sobre o git e o que usei antes dele durante meus primeiros anos de faculdade.
Existem três razões principais para usar um VCS para todos os projetos que tenho, até mesmo alguns projetos sem código.
Enquanto eu estava desenvolvendo um jogo html5 durante a faculdade com alguns outros alunos calouros, não sabíamos sobre o VCS e usamos uma forma muito ineficiente de criar o nosso jogo. Usamos arquivos .zip, cada um numerado sequencialmente com algumas letras, letras aleatórias, suponho: game-1.zip, game-1b.zip, ... game-75c.zip, etc.
Isso aconteceu porque havia mais de uma pessoa trabalhando no projeto, cada uma trabalhando em uma parte do código ou arte e faríamos nossas próprias alterações no projeto e, em seguida, criaríamos um novo zip, tentando ao máximo controlar os números e cartas. De vez em quando, sentávamos e abríamos muitos zips e arrastávamos e soltávamos arquivos, copiava e colava código, em uma sessão épica de mesclar as versões. Nem é preciso dizer que não funcionou muito bem, acabamos perdendo parte do código ou alguma imagem nova.
E a pior parte foi quando nós testamos o jogo e alguém notou um bug que não existia em uma versão anterior ou já foi corrigido por alguém que levou a uma sessão muito irritada de abrir muitos arquivos zip procurando pelo "certo" código.
No próximo projeto, procuramos algo melhor do que zips e dropbox / drive e descobrimos sobre o git. Não que eu nunca tenha ouvido falar disso antes, apenas nunca passei muito tempo aprendendo.
Usar coisas do git funcionou. Cada um tinha sua própria versão para trabalhar (branch), cada 'mudança' era armazenada (commit), e para colocar tudo junto tínhamos apenas que fazer o merge, o que era feito automaticamente.
Se você está codificando algo, sugiro fortemente que use um sistema de controle de versão, mas também sugiro que o use se estiver escrevendo, criando arte ou quase tudo que usa arquivos. É mais fácil se o seu arquivo for baseado em texto, mas não fará mal manter o controle de cada nova versão de uma imagem.
Qual VCS você deve usar? Se você estiver em dúvida, use git.
Espero que tenha gostado, continue aprendendo!