Introdução
O que é Git?
Sistema de controle de versão distribuído onde não temos um repositório central e cada cópia do projeto principal torna-se um repositório local ou remoto.
O que é branch?
É uma ramificação do projeto principal. Quando inicializamos um projeto com Git temos um branch origin que mantem uma cópia do projeto original e um branch master que é o branch padrão a partir de onde criaremos nossos branches para desenvolvimento.
Pode haver mais de um branch por desenvolvedor?
Não há limites para criação branches e cada branch pode até torna-se um outro projeto ou ter correções e desenvolvimento de novas características paralelamente. Por exemplo, após obter os arquivos de um determinado projeto para o branch master podemos criar um branch working para desenvolvermos determinadas tarefas e ao mesmo criar um branch fix para corrigir uma falha encontrada em um desenvolvimento anterior sem que uma alteração interfira em outra. Cada branch terá seus “commits” individuais a qualquer tempo.
Como manteremos os branches sincronizados então?
Ao fazer commit no branch fix mesclamos (merge) as atualizações com o branch master e a partir daí fazemos uma atualização (rebase) do branch working com as correções executadas no branch master. Logicamente podem haver conflitos que deverão ser tratados nesta ocasião.
O que é trunk?
É repositório principal no SVN ou a linha principalmente de desenvolvimento, no Git tudo é tratado como branch e neste caso é o branch master.
Comparação entre os comandos básicos do Git e SVN:
git clone url | svn checkout url |
git pull | svn update |
git init-db | svnadmin create repo |
git diff | svn diff |
git status | svn status |
git checkout path | svn revert path |
git add file | svn add file |
git commit -a | svn commit |
git branch branch | svn copy http://example.com/svn/trunk http://example.com/svn/branches/branch |
git checkout branch | svn switch http://example.com/svn/branches/branch |
git branch | svn list http://example.com/svn/branches/ |
Referências:
- Git – SVN Crash Course
- Learning git-svn in 5min