Gestão de repositórios com git

De Dados Abertos
Ir para: navegação, pesquisa

Antes de começar a trabalhar num projeto open source, deve-se ler cuidadosamente as recomendações específicas para programadores (OpenTripPlanner Developers Guide).

Além, vamos precisar de perceber o workflow típico do git.

Trabalhar localmente

Já criámos uma cópia do repositório no github. Na verdade, é mais prático trabalharmos localmente e, eventualmente, desligados (em offline).

Por isso, vamos criar uma segunda cópia integral de todo o repositório localmente, onde vamos trabalhar. Sempre que fizermos alterações, vamos propagá-las para o nosso repositório no github. Assim, se houver um problema qualquer no nosso computador local, todo o nosso código está a salvo.

Antes de começar a trabalhar com o git, vamos configurá-lo com o nosso nome e endeço de email do github, para não termos que repetir essas informação recorrentemente.

git config --global user.name jgrocha
git config --global user.email jgr@di.uminho.pt

Pode confirmar as configurações que fez com:

git config --list

Criar mais uma cópia do repositório localmente

Podemos criar uma cópia do repositório que está no github no nosso computador, usamos o comando git clone, seguido da indicação do repositório que queremos clonar.

A partir do seu repositório OpenTripPlanner no github pode muito facilmente fazer copy do endereço do repositório.

Endereco repositorio github.png

Sabendo o endereço, use o mesmo para copiar o repositório fazendo:

git clone https://github.com/jgrocha/OpenTripPlanner.git

Se tudo correu bem, passa a ter uma nova pasta OpenTripPlanner com uma cópia do repositório que está no github.

Relação entre os repositórios

Depois destas operações, temos 3 repositórios idênticos:

  • um repositório local
  • um repositório na nossa conta no github
  • o repositório inicial, que usámos para fazer o nosso fork

Vamos ver alguma informação sobre o nosso repositório local com:

cd OpenTripPlanner
git status

O resultado do comando anterior, deve ser algo como:

On branch master
Your branch is up-to-date with 'origin/master'.
 
nothing to commit, working directory clean

Há várias informações que são de notar.

Por um lado, diz que estamos a trabalhar no ramo 'master', um dos vários ramos que o projeto OpenTripPlanner tem.

Por outro, diz que o nosso repositório está atualizado em relação ao repositório 'origin/master'.

O comando git clone foi simpático e, além de copiar todo o repositório, acrescentou uma referência para identificarmos facilmente o repositório que foi clonado.

Com o comando:

git remote -v

lista todas as referências que temos a outros repositórios. O resultado será:

origin	https://github.com/jgrocha/OpenTripPlanner.git (fetch)
origin	https://github.com/jgrocha/OpenTripPlanner.git (push)

Daqui para frente, sempre que quisermos mencionar o nosso repositório no github, identificado por https://github.com/jgrocha/OpenTripPlanner.git basta dizer origin.

Vamos aproveitar para criar mais uma referência, desta vez ao repositório original do OpenTripPlanner, do qual fizemos o nosso fork.

git remote add upstream https://github.com/opentripplanner/OpenTripPlanner.git

Desta forma, passamos a ter uma referência origin e outra upstream.

Confirme com:

git remote -v

Usar as referências nos comandos

Estas referências a origin e a upstream podem ser utilizadas nos comandos git.

git remote show origin
git remote show upstream

Comparar o nosso repositório com 'origin'

Como exemplo dessa utilização, repare como se compara o nosso repositório com o repositório original identificado por upstream:

git fetch upstream
git diff master upstream/master

Sincronizar o nosso repositório

Se, por exemplo, tivessem havido contribuições novas no repositório upstream, podíamos integrar essas alterações no nosso repositório local com:

git pull upstream master