Git básico 2 – Branchs

Na primeira parte dessa reprodução do HOL – Iniciando com Git, fizemos o clone do repositório criado quando o TP FabrikamCommunity foi criado, criamos uma aplicação, adicionamos ao repositório, fizemos um alteração e fizemos commit juntamente com o número do work-item 🙂

Mas dificilmente trabalhamos sozinho, e até mesmo quando estamos sozinho podemos usar técnicas para não quebrar o que está funcionando. Ou seja, podemos usar branchs para isolar o código de uma sprint, implementação de feature, ou mesmo de um teste para verificar se atualizarmos algum framework que estamos trabalhando, o código irá quebrar. Também temos que integrar código desenvolvido por outros desenvolvedores e precisamos fazer merge com o nosso código.

Já é tempo de ver tudo isso…

A criação de um branch no Git não é muito diferente da criação no TFVC, temos que dar um nome e de que ponto queremos cria-lo, de volta ao console…

git branch

O comando branch lista os branchs, não precisa utilizar o – – list, já que este é o retorno padrão. Na figura abaixo temos o retorno do comando e o resultado é apenas um branch: master.

image

Como no vídeo vamos criar um branch para desenvolvimento e já “ir” para esse branch, vou fazer isso a partir do master e último commit:

git branch desenvolvimento

git checkout desenvolvimento

O primeiro comando cria o branch e o segundo troca para ele, mas podemos fazer um encadeamento de comandos no Git, já que estamos digitando é melhor!

git checkout –b desenvolvimento

E a troca é instantânea!!!

image

Sem o parâmetro –b ele irá procurar um branch com o nome desenvolvimento, não vai achar e vai dar um erro. O parâmetro –b diz que é um novo branch que está sendo feito checkout, então crie-o. Com o tempo você irá perceber esse encadeamentos, que agilizam a digitação no console.

Agora que estamos no branch de desenvolvimento, vamos no Visual Studio fazer uma alteração no código, não se preocupe se a solução já estava aberta e você criou o branch no console, vai ver que já está selecionado o branch de desenvolvimento… Ah, você sabe onde ver isso no Team Explorer, não?

Vá no arquivo HomeController.cs, na pasta Controllers, e procure pelo método About, troque a string no método para:

“Development description.”

Salve e volte para o console.

Precisamos fazer o commit dessa alteração, é o mesmo que já usamos anteriormente… Mas estamos no console e aqui não temos o Team Explorer para facilitar a vida! Vamos se o código está pronto para ocommit:

git status

image

O comando status retorna o nome do arquivo e em vermelho, significa que precisamos colocá-lo na área de stage, usando o comando add. Mas, olha o posh-git atuando! No primeiro momento o console estava indicando que não havia alteração, o branch tinha sido criado, mas nenhum arquivo modificado, então o comando status foi executado e o plug-in já pegou um arquivo editado, no momento 2, não era preciso nem executar esse comando se tivéssemos teclado somente ENTER o plug-in já daria esse feedback, e se é só uma edição basta ver pelo ‘~’ e poderíamos ter teclado o enter e encadeado o comando de commit e add! Vamos fazer isso:

git commit –am “dev version”

Esse comando irá fazer o add de arquivos que foram editados, e em seguida fará o commit; se tiver um arquivo novo ele não irá ser adicionado ao stage, mas o commit será executado… por que? Assunto para um post futuro, já coloquei no backlog 😉

image

Continuando:

git checkout master

image

Se o Visual Studio estiver aberto você verá a seguinte mensagem quando fizer um ALT + TAB para ele:

image

Feito o checkout para o branch master o código será recarregado no Visual Studio, clique Yes, e verá que o código voltou ao original, que é o que deveria estar no branch master, então tudo OK por enquanto.

Por enquanto ainda não vamos publicar esse branch no servidor, vamos olhar o nosso histórico:

git log

image

Vamos entender, estamos no branch master, vemos isso pelo posh-git, e temos um commit, teria que ter aparecido dois commits? Não! Como estamos no branch master, e não fizemos merge do código, este branch só tem um commit, que é o do post anterior. Mas no vídeo, olhando pelo History no Visual Studio, temos informações mais abrangentes, se você for lá agora, verá igual a figura abaixo:

image

Como ver dessa maneira no Git? É preciso incrementar o nosso comandolog!

git log –graph

image

Incrementa um pouco… Traz aquele ‘*’, pode parecer pouco, mas é por que só temos um commit…

git log – -graph – -decorate

image

Adicionando o parâmetro – -decorate vai retornar o branch em que foi feito aquele commit, e mais algumas outras informações como HEAD, que não vamos nos preocupar agora.

git log – -graph – -decorate – -all

image

Agora sim! Temos até mais informações que a tela do Visual Studio! Reparem que na vertical tem uma “linha” desenhada com traços, quando você tiver vários branchs e commits vai ver um gráfico de linhas como o do metrô Londrino… Que vão ajudar entender onde cadacommit foi feito. No momento esse comando com os devidos parâmetros nos basta para saber que o último commit foi feito no branchdesenvolvimento, que é portanto o mais atualizado, já que não fizemosmerge para o master.

Se quiser fazer um “backup” do código no servidor é só mandarmos obranch desenvolvimento para o servidor, já que ainda não vamos fazer omerge para a master:

git push origin desenvolvimento

image

Podemos ler esse comando assim: empurre o código, para origem, do branch desenvolvimento. Agora vamos no Web Portal dar uma olha de como ele está:

image

Em commits o branch que estamos olhando é o master, e tem um sócommit lá. Como fizemos o push para o servidor do nosso branchdesenvolvimento, vamos trocar na combo (clicando na seta ao lado de master):

image

E daí temos o código lá no servidor!

Como esse post está ficando grande, vou finalizar a parte de merge em um terceiro post, amanhã… aqui no blog!

One Reply to “Git básico 2 – Branchs”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.