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.

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