GIT – Um controle de versão simples e poderoso

Esse guia vai ser bem rápido. Quero aproveitar um curso que estou fazendo na caelum, para ajudar a não esquecer e ser um resumo para o futuro. Sem mais delongas.

Instalação

Esse é o que considero o ponto mais importante para a adoção do GIT. Não há necessidade de configurações, nenhuma dificuldade em subir um servidor é tudo extremamente simples.

Instalação no windows

Baixar os arquivo: https://git-scm.com/downloads

Fazer a instalação next, next, finish. O instalador perguntará algumas coisas, como não sei a diferença entre elas, vai assim mesmo por enquanto. Na verdade em um momento ele pergunta se vou utilizar apenas o git-bash ou vou utilizar também o prompt do Windows. Mesmo eu deixando na opção de também o prompt do Windows, o git não se comportou muito bem, principalmente na hora de utilizar o ssh. Então utilizarei o git-bash e pronto!

Instalação no Ubuntu


apt-get install git

Precisa dizer mais alguma coisa?

Criando um par de chaves para acesso aos repositórios na nuvem

Já iremos precisar, então já deixemos tudo pronto. Quem está no Windows por favor abrir o Git-Bash e não o prompt do DOS.


$ ssh-keygen

Dê um nome para o arquivo se quiser, e por enquanto deixe usuário e senha em branco. Pronto!

Abra o arquivo que deve estar na pasta ~/.ssh/.pub, e já pode deixar copiado na área de transferência. Utilizamos este par de chaves para que nossa máquina possa acessar os repositórios na nuvem sem a necessidade de termos de utilizar o nosso usuário e senha a todos instante.

Repositórios mais famosos na nuvem

GitHub – Grátis para projetos open source, ou seja repositórios públicos, para privados é necessário $ 7,00 = R$  25,00 por mês.

https://github.com/pricing

Bitbucket – Grátis para repositórios públicos e privadas mas limitado a 5 usuários, além disso começa com planos que começam em $ 10 ,00= R$ 33,00 por mês.

https://bitbucket.org/product/pricing?tab=host-in-the-cloud

Criando um repositório(Servidor) no Gitbucket

Porque utilizar o GitBucket se o GitHub é mais famoso? Para ter uma alternativa e porque é mais barato.

Acessar o site Bitbucket, criar usuário e senha para acesso, óbvio.

Acessar a aba de Repositório e criar um novo repositório.

capturar2

Adicionando a chave pública

1 – Abra o menu de configurações(Bitbucket settings).

capturar5

2 -Clique em SSH Keys no menu lateral.

capturar6

3 – Agora clique em Add Key.

capturar7

4 – Cole o conteúdo do arquivo .pub gerado anteriormente, dê um nome para a chave e clique no botão Add key.

Criando um repositório(Servidor) no GitHub

Porque utilizar o GitHub se para repositório privado é pago? Porque muitas empresas utilizam e porque é utilizado em entrevistas.

Acessar o site GitHub, criar usuário e senha para acesso, 2x óbvio!

1 – Clicar em novo repositório.

capturar3

2 – Defina um nome para o repositório e marque como público, pois como não pagamos, o privado não estará disponível.

capturar4

Adicionando a chave pública

1 – Vá ao menu de configurações(settings).

capturar8

2 – Clique em SSH and GPG keys no menu lateral.

3 – Clique no botão New SSH key.

capturar10

4 – Cole o conteúdo do arquivo .pub gerado anteriormente, dê um nome para a chave e clique no botão Add SSH key.

Criando um Servidor na rede local

Para configurarmos um servidor GIT em uma máquina da nossa rede basta incializar um diretório no GIT com a opção –bare, para que seja criado um diretório com o nome especificado, dentro da pasta atual e que não permita que sejam realizados commits diretamente do servidor. Quer mais simples que isso????

git init --bare projeto.git

O GIT aceita os protocolos Local, SSH, Git e HTTP/HTTPS.

Criando um projeto localmente no git

Adicionando um Diretório/Projeto ao Git – git init


mkdir projeto-exemplo

cd projeto-exemplo

git init

Captura de tela de 2016-10-20 10-11-12.png

Adicione um arquivo qualquer ou crie um arquivo no diretório. Criei o arquivo arquivoExemplo.txt.

Agora para adicionar o arquivo sob o git basta digitar:


git add arquivoExemplo.txt

ou


git add .

O “git add .” adiciona todas as alterações de todos os arquivos.

Agora para realmente salvar na branch, utilizando o git commit, utilizando o parâmetro -m para já passar a mensagem associada ao commit pela console.


git commit -m "Adicionei um arquivo de exemplo"

E receberemos este erro na cara:

captura-de-tela-de-2016-10-20-10-45-45

O git quer saber quem somos e ele deixa bem explicado como fazer isso, então é só fazer.


git config --global user.email "br.marcelocorrea@gmail.com"
git config --global user.name "Marcelo Correa"

E agora novamente e sem erro:


git commit -m "Adicionei um arquivo de exemplo"

captura-de-tela-de-2016-10-20-10-51-41

Agora podemos ver o log das nossas alterações:


git log

Captura de tela de 2016-10-20 10-54-20.png

Subindo as alterações para o Bitbucket

Mas isso está apenas na minha máquina, ela pode pegar fogo, é melhor subir minhas alterações para a nuvem no Bitbucket. Logue no Bitbucket, clique no menu lateral Clone, selecione a opção SSH e copie o conteúdo.

captura-de-tela-de-2016-10-20-11-11-40

captura-de-tela-de-2016-10-20-11-12-35

Agora precisamos indicar ao nosso projeto no GIT, para onde ele deve mandar as alterações na nuvem:


git remote add origin git@bitbucket.org:mlfcbr/primeiro.git

Mas caso tenha clonado um projeto que já existia remoto, da forma indicado abaixo, o passo acima não é necessário:


git clone git@bitbucket.org:mlfcbr/primeiro.git

captura-de-tela-de-2016-10-20-11-21-27

E em seguida, subir as alterações para esta nossa origem, na branch master:


git push origin master

captura-de-tela-de-2016-10-20-11-31-54

Subindo as alterações para um servidor na sua rede

Precisamos indicar para o nosso repositório, qual é o seu servidor para onde as informações devem ser armazenadas

git remote add nome-servidor file://192.168.0.1/home/correa/desenvolvimento/primeiro.git

Traduzindo… Git, adicionao o servidor remoto de nome nome-servidor usando o protocolo file no endereço 192.168.0.1/home/correa/desenvolvimento para o repositório remoto primeiro.git.

E depois fazer o push normalmente.

Fluxo(Status) dos arquivos no GIT

UNTRACKED -> UNSTAGED -> STAGED(TO BE COMMITED)

Untracked – Ainda não monitorado pelo git

Unstaged – Monitorado com alterações que devem ser incluídas em um Commit

Staged(To be commited) – Arquivos com alterações já adicionados ao próximo Commit, mas ainda não commitados

git-stages-1
https://mitbal.files.wordpress.com/2016/08/git-stages-1.png?w=700

Criando um Branch

Não há nada mais fácil neste mundo:


git branch work

Vou mostrar um pouco mais detalhado abaixo:

captura-de-tela-de-2016-10-20-11-36-58

git status – mostra onde estamos, no caso no branch master;

git branch work – cria o branch work, baseado no branch master atual

git checkout work – seleciona o novo brach work(se utilizarmos o parâmetro -b ele cria e já seleciona a branch);

git status – mostra onde estamos, agora no branck work;

Trabalhando com Braches

Existem duas formas mais conhecidas de se trabalhar com Branches.

1 – Fazer o Merge na Work e em seguida na Master;


git checkout master
git pull
git checkout work
git merge master
git checkout master
git merge work
git push
git checkout work

2 – Apontar a Work para a Master, e na Master fazer o Merge com o conteúdo da Work;


git checkout master
git pull
git checkout work
git rebase master
git checkout master
git merge work
git push
git checkout work

Perceba que a única diferença está na linha 4. A grande vantagem do modelo 2 é que o fluxo dos Branches serão mais lineares, ou seja mais fácil de se gerenciar, principalmente quanto maior a equipe.

Maiores detalhes em: https://www.atlassian.com/git/tutorials/merging-vs-rebasing/conceptual-overview

Gerando TAGs

TAGs, são uma foto de determinado ponto do código, normalmente utilizadas quando vamos enviar a versão para produção ou homologação e queremos ter um ponto para voltar rapidamente caso seja detectado algum problema, enquanto a equipe continua o seu desenvolvimento normalmente na Branch principal. E mais uma vez tudo é muito fácil com GIT!

git tag -a v1.5 -m "Teste de geração de tag"
git tag
git push origin v1.5

captura-de-tela-de-2016-11-04-11-25-55

  1. Crio a tag;
  2. Listo as tags;
  3. Subo a tag para o repositório remoto;

Guia de Referência

ssh-keygen – Utilizado para gerar um par de chaves criptográficas
git init – Inicializar o git para um diretório, fazer com que passe a ser controlado pelo git
git init –bare projeto.git
git add adiciona um arquivo ou alteração para ser commitado
git config –global user.email – Configura o seu email
git config –global user.name – Configura o seu nome
git commit -m “mensagem” – Realiza o commit do que já foi adicionado pelo ADD
git commit -am “mensagem” – Adiciona as alterações e realiza o commit
git clone git@bitbucket.org:usuário/repositório.git – Clona o conteúdo de um repositório para a sua máquina;
git remote add origin git@bitbucket.org:usuário/repositório.git – Adiciona um repositório remoto ao seu repositório local.
git remote rm origin Apagar o que você fez com add origin
git push origin – Grava as alterações no origin(Bitbucket no meu caso) na branch master
git branch – Criar um Branch
git status – Mostra o status dos arquivos monitorados
git pull – Busca as alterações da origin(servidor remoto)
git rebase master – Usar sempre de dentro do seu Branch de trabalho ou feature apontando para o master, como no exemplo. Ele irá assumir todas as alterações da master, e adicionar a suas alterações ao final
git merge – Realiza o Merge do conteudo atual com o de uma outra Branch. Traz o conteúdo da Branch especificada para a atual
git log – Exibe o log das alterações
git show – Exibe o conteúdo antes da alteração e depois da alteração, coloridinho!!! Mas depois do commit já ter sido realizado
git tag -a nome-da-tag -m “mensagem” – Criar uma Tag no seu repositório
git tag – Listar as tags do repositório
git push origin nome-da-tag – Subir a tag para o repositório
git push origin –tags – Subir todas as suas tags locais
git reset HEAD – Utilizado quando queremos desfazer os ADDs que já foram feitos por nós, ou,  automáticos gerados por exemplo quando se apaga um arquivo. Assim poderemos fazer os ADDs novamente e os Commits mais passo a passo, ou seja detalhando melhor do que tudo em um único Commit
git diff – Pré-visualizar as alterações e diferenças entre dois Branches.
git revert – Cria um novo Commit, desfazendo o conteúdo do Branch especificado
git checkout —  – Desfaz tudo que foi feito e não foi commitado no arquivo especificado, incluise recuperar de uma deleção
git checkout  – Seleciona o branch desejado
git checkout . – Desfaz tudo que foi feito e não foi commitado, é para quando você fez muita caca, kkkkk

800px-git_workflow

Referências

https://www.caelum.com.br/curso-praticas-ageis/

http://blog.caelum.com.br/passo-a-passo-para-comecar-com-git-e-novo-curso-online/

https://www.atlassian.com/git/tutorials/merging-vs-rebasing/conceptual-overview

http://rogerdudler.github.io/git-guide/index.pt_BR.html

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s