Controle de Versões com o GIT - Parte 2
14/08/2009
Categories: git
Essa é a segunda parte do meu tutorial básico sobre o GIT. Neste tutorial irei mostrar como trabalhar com branching e resolver conflitos que podem ocorrer durante o merge.
Trabalhando com branches
Para criar uma novo branch a partir do commit atual utiliza-se o seguinte comando:
git checkout -b novo_branch
Para verificar quais são os branches existentes utilizamos o comando:
git branch
Para retornar para o branch master utilizamos os comando:
git checkout master
Para alterar entre os branches existentes o comando utilizado é:
git checkout novo_branch
Juntando dois branches
Uma das coisas mais dispendiosas quando estamos trabalhando com o SVN é juntar dois branches que estão em desenvolvimento. Dificilmente gastamos menos que 10 minutos para resolver todos os conflitos e unir dois branches. Algumas vezes isso causa muita dor de cabeça para o programador.
O GIT possui um sistema de merge muito intuitivo. Poucas vezes o programador precisa intervir para resolver conflitos em seus merges. Para isso ele utiliza várias estratégias para fazer o merge.
O comando utilizado para fazer o merge é o seguinte:
git merge master novo_branch
Outro comando que podemos utilizar para juntar dois branches é o comando rebase
. A principal diferença do comando rebase para o merge é que ao invés de criar um novo commit com o resultado da junção dos dois branches o GIT faz o fast-forward juntando as duas árvores de commits, mantendo, com isso, o histórico de commits feitos em ambos os branches e diminuindo o número de conflitos.
A figura a seguir mostra o comportamento do rebase.
Resolvendo conflitos
Algumas vezes quando utilizamos do merge ou até mesmo do rebase podem ocorrer alguns conflitos. Para resolve-los temos que editar os arquivos que causaram o conflito. Os arquivos com conflito geralmente se encontram com a seguinte estrutura:
1 class Person
2 def name(text)
3 <<<<<<< HEAD:person.rb
4 puts "Pessoa: " + text
5 =======
6 puts 'Nome: ' + text
7 >>>>>>> novo_branch:person.rb
8 end
9 end
Para resolver este conflito basta apagar as linhas que não são necessárias e depois dar o commit.
No caso do rebase ele vai para o procedimento assim que achar o primeiro commit conflitante. Para continuar com o rebase é necessário primeiramente resolver o conflite e depois digitar o comando
git rebase --continue
Caso seja necessário abortar um rebase utiliza-se o comando
git rebase --abort
Eu particularmente prefiro utilizar uma ferramenta para resolver os conflitos, para isto eu utilizo o comando
git mergetool
Existem diversas ferramentas para isto. Eu utilizo o gvimdiff, mas já utilizei o meld, que é uma ótima ferramenta para quem usa o gnome.
Conclusão
Encerro aqui esta segunda parte do tutorial do GIT, semana que vem eu retorno com mais algumas considerações sobre o GIT
Referências
Boa parte das informações deste post foram retiradas de:
blog comments powered by Disqus