Fazendo fork e pull requests¶
Uma das principais características do git é servir para o desenvolvimento de código-fonte colaborativo: quando várias pessoas trabalham no mesmo código-fonte, ao mesmo tempo. O git fornece os meios necessários para coordenar o trabalho, de forma que não se perca o foco do trabalho, tentando integrar diferentes versões do mesmo código-fonte.
Uma das modalidades de colaboração com o git é quando fazemos fork de um repositório. Um fork é um mecanismo de colaboração em que copiamos o repositório remoto de outra pessoa (fork) para nossa conta do GitHub, fazemos modificações na nossa cópia, e enviamos nossa cópia ao repositório remoto original (pull request), para que as modificações sejam integradas neste. A aceitação das modificações realizadas dependem da aceitação dos mantenedores do repositório remoto original.
Passo-a-passo¶
A seguir são descritos os passos necessários para fazer um fork e posteriormente um pull request em um repositório de outro usuário do GitHub.
Acessar a página do repositório que deseja-se fazer o fork, no github. Vamos chamá-lo de
https://github.com/CTISM-Prof-Henry/gitEssentials;Clicar no botão “fork”, no canto superior direito;
Confirmar que deseja-se fazer fork na tela que aparecer:

Clonar o repositório que foi recém criado (a cópia, não o original) com
git clone. Por exemplo, se eu, henryzord, fizer um fork do repositório gitEssentials (que pertence à conta CTISM-Prof-Henry), a URL do meu repositório copiado seráhttps://github.com/henryzord/gitEssentials, e o comando a ser executado égit clone https://github.com/henryzord/gitEssentials
Criar uma nova branch local, e mudar para ela:
git checkout -b <nome da branch>. Supondo que queiramos criar uma nova branch de nometop, o comando a ser executado égit checkout -b top
Notificar o git de que este repositório relaciona-se com o repositório original:
git remote add upstream <url do repo original>. No exemplo, ficariagit remote add upstream https://github.com/CTISM-Prof-Henry/gitEssentials
Fazer as modificações necessárias no código-fonte (editar, deletar ou criar arquivos);
Adicionar arquivos com
git add .
Salvar modificações com
git commit -m "mensagem"Executar um
git pullpara atualizar o repositório local com as modificações do repositório remoto originalgit pull origin main
Enviar modificações para o repositório copiado, em uma branch remota que será criada, chamada
top:git push -u origin top
Depois que enviarmos as modificações para o nosso repositório copiado, podemos acessá-lo pelo GitHub. Perceberemos uma mensagem na tela inicial, mostrando o quão atualizado nosso código-fonte deste repositório está em relação ao código-fonte do repositório original:

Enviaremos as modificações que fizemos no repositório copiado para o repositório original. Atenção: iremos fazer isto apenas quando tivermos terminado de fazer todas as modificações necessárias no nosso repositório copiado. No nosso repositório copiado, como mostrado na figura acima, vamos clicar no botão Pull requests;
Clicamos no botão new pull request;
Abrirá uma tela que irá comparar o nosso código-fonte copiado com o código-fonte original. Como a visualização padrão do GitHub é para a branch main, não irá mostrar nada significante, pois criamos uma nova branch top:

No seletor do repositório copiado, mudamos para a branch top:

Clicamos no botão create new pull request;
Neste passo poderemos escrever uma mensagem para o administrador do repositório original, explicando as modificações feitas no pull request. Depois de escrever a mensagem, clicamos em create pull request.

Esta tela é o que o administrador do repositório original verá, no GitHub dele:

Se ele aceitar nossas modificações, elas serão integradas ao repositório original. Poderemos vê-las na lista de commits do repositório original.
Fluxograma¶
O fluxograma de trabalho quando estamos trabalhando com forks e pull requests é apresentado na figura abaixo:
