oi,
bom, um pouco sobre controle de versão
é criado num servidor um repositório, que irá armazenar os códigos fontes ( e o que mais você quiser ) dos seus projetos bem como as diferenças entre as versões
cada desenvolvedor irá ter uma cópia local deste código onde ele irá trabalhar
esta cópia local é sincronizada sempre que necessário com o servidor, desta forma muitos desenvolvedores podem trabalhar ao mesmo tempo em arquivos diferentes ou até no mesmo arquivo
basicamente (na minha opinião) um controle de versão tem duas funções então no desenvolvimento do sistema
- você tem acesso a todas as versões do software sendo que você pode recuperar a qualquer momento uma versão estável ou então customizada para um determinado cliente ou produto
- vários desenvolvedores podem trabalhar ao mesmo tempo em um mesmo código sendo que neste caso o CV (controle de versão) irá proporcionar funcionalidades para este controle (tem a ver com os conceitos que eu falei de repositório, cópia local, etc)
existem alguns conceitos que são mais ou menos padrões entre os CV
import - irá submeter inicialmente o projeto para controle do repositório
update - atualiza o arquivo (ou arquivos) da cópia local com a última versão do repositório
commit - sobe (atualiza) as alterações da cópia local para o repositório
checkout - baixa (recupera) um projeto do repositório para uma cópia local afim de ser trabalhado pelo desenvolvedor
uma outra funcionalidade interessante de um CV é o gerenciamento dos conflitos, isto é, mais de uma pessoa modificou o mesmo trecho de uma classe por exemplo, na hora de fazer o commit destas alteralções para o respositório eu tenho um conflito, pois o CV nao tem como descobrir qual a versão deve ser comitada
neste caso CV diferentes gerenciam confiltos de forma diferente
abs