Git: introdução parte 3

Git básico para principiantes

Este é o terceiro post desta sequência. Caso não tenha visto ou queira dar uma revisada confira os posts Git: introdução parte 1 e parte 2.

Na parte 1 vimos como:

  • Criar um repositório
  • Adicionar modificações
  • Criar um commit

Na parte 2 vimos como:

  • Criar um novo branch (ramo)
  • Trocar o branch ativo
  • Merge (fundir) dois branches

Nesta terceira parte vemos como trabalhar com repositórios remotos:

  • Clonar um repositório
  • Adicionar um novo repositório
  • Obter novos commits de um repositório
  • Enviar novos commits para um repositório

Requisitos

Além dos requisitos da parte anterior, precisaremos de uma conexão com a internet para utilizar o GitHub para os exemplos.

Clonando um repositório remoto

Como exemplo utilizaremos o repositório de exemplo octocat/Spoon-Knife. Para clonar o repositório utilizamos o comando

$ git clone CAMINHO_PARA_O_REPOSITORIO

O repositório remoto pode ser qualquer caminho que o Git compreenda e, apesar de ser chamado de remoto, ele pode ser na própria máquina local. Abaixo estão alguns exemplos de caminhos para repositório:

  • HTTPS https://github.com/octocat/Spoon-Knife.git
  • SSH [email protected]:octocat/Spoon-Knife.git
  • SSH ssh://[email protected]/octocat/Spoon-Knife.git
  • LOCAL ../../repos/Spoon-Knife.git
  • LOCAL /home/joao/workspace/Spoon-Knife

Para clonarmos o repositório Spoon-Knife utilizamos

$ git clone https://github.com/octocat/Spoon-Knife.git

Por padrão o Git criará uma referência ao repositório remoto com o nome “origin”, que pode ser vista pelo comando

$ git remote -v

Adicionando um repositório remoto

Depois de brincar um pouco com seu repositório local é provável que queira publicar suas melhorias que fez no projeto. Para isso fez uma conta no GitHub e criou um fork do projeto original.

Agora você quer adicionar o seu novo repositório remoto (vinculado a sua conta no GitHub) no seu repositório local, para que possa enviar as modificações.

Porém você não vai querer remover o repositório original, de onde poderá receber atualizações futuras.

A boa notícia é que o Git permite gerenciar vários repositórios remotos!

Vamos adicionar o novo repositório a lista de remotos:

$ git remote add meu https://github.com/USER/Spoon-Knife.git

Este comando cria um repositório remoto chamado “meu”.

Caso tenha errado o caminho pode apagá-lo e tomar mais cuidado desta vez…

$ git remote rm meu

Obter novos commits de um repositório

Para abaixar os commits de um repositório utilizamos o comando fetch. Este comando copia a árvore de commits do repositório remoto para o repositório local. Dessa forma você pode trabalhar com os novos commits sem precisar de uma conexão.

$ git fetch meu
$ git fetch origin

É possível ver os branches remotos que foram criados.

$ git branch -av

Você pode realizar um merge em um branch remoto.

$ git merge origin/master

Caso queira realizar um fetch e um merge, há um caminho mais curto: o comando pull, que realiza as duas operações de uma vez.

$ git pull origin

Enviar novos commits para um repositório

Após gerar commits no repositório local, abaixar commits de um repositório remoto (origin) e fazer um merge, você provavelmente vai querer fazer upload das modificações para o repositório que é dono.

Isso é feito a partir do comando push, que envia a árvore de commits para o repositório remoto.

$ git push meu

Você só pode enviar commits para os repositórios que tiver permissão de escrita. Por isso é necessário criar um fork do repositório com a sua conta, pois no repositório do outro usuário você não terá permissão de escrita (a menos que ele lhe conceda a permissão).

Caso o repositório remoto esteja vazio será necessário especificar qual branch deve ser enviado. Por padrão o Git envia o branch selecionado, porém se o branch não existe no repositório remoto (ou você quer enviar um branch que não está selecionado) será necessário especificar ele explicitamente.

$ git push meu master

Concluindo

Com o Git você pode gerenciar vários repositórios de forma fácil e prática. Para facilitar a visualização das árvores recomendo o utilitário Gitk, com opção –all, que mostra todos os branches, inclusive os não selecionados e os remotos.

$ gitk --all

Gostou do post? Curte usar o Git, espalhe a palavra e compartilhe com seus amigos!

Djones

Deixe uma resposta