Artigo original: How to make your first pull request on GitHub

O que significa fork?

Fork, ou bifurcação, é quando gostamos tanto do repositório de alguém e gostaríamos de tê-lo em nossa conta do GitHub, nós o copiamos para que possamos trabalhar com ele separadamente.

Quando copiamos um repositório, obtemos uma versão desse repositório inteiro com todo o seu histórico. Após a cópia, podemos fazer o que quisermos sem afetar a versão original.

O que é um pull request?

O pull request (algo como 'solicitação de envio', em português) é a maneira como contribuímos para projetos de grupo ou projetos de código aberto (open source).

Por exemplo, um usuário Harry copia um repositório de ThanoshanMV e faz alterações nesse repositório. Agora, Harry pode fazer um pull request para ThanoshanMV, mas cabe a ThanoshanMV aceitá-lo ou recusá-lo. É como dizer: "ThanoshanMV, você poderia aceitar minhas alterações, por favor?"

O que significa contribuir

Podemos contribuir para um projeto open source de diversas maneiras, além do código. Algumas dessas maneiras são descritas abaixo.

Como diz o guia inicial de hacktitude da empresa de tecnologia 99xtechnology, podemos contribuir para um projeto open source das seguintes maneiras:

  1. Design: você pode criar os layouts de um projeto para melhorar sua usabilidade, melhorar a navegação e o menu do projeto com base em programas de pesquisa do usuário, criar arte para logotipos ou camisetas e fornecer guias de estilo para o projeto.
  2. Redação: você pode escrever e melhorar a documentação do projeto ou traduzir a documentação, iniciar um boletim informativo (newsletter) para o projeto ou escrever tutoriais para ele, selecionar destaques da lista de discussão ou analisar uma pasta de exemplos mostrando como os projetos são usados.
  3. Organização: você pode vincular issues duplicadas, sugerir novos labels para as issues, sugerir o fechamento de issues antigas abertas e fazer perguntas sobre issues abertas recentemente para levar a discussão adiante.
  4. Ajude os outros: responda a perguntas sobre issues em aberto, revise o código nos envios de outras pessoas e ofereça-se para orientar outro colaborador.
  5. Código: ajude a resolver issues em aberto, pergunte se você pode fornecer novos recursos e melhorar ferramentas e testes.

Vamos fazer nosso primeiro pull request!

Se você não está muito familiarizado com o Git e o GitHub, revise o seguinte material: The beginner’s guide to Git & GitHub (texto em inglês).

1. Faça uma cópia do repositório

Primeiro, copie o (faça o fork do) repositório. Basta clicar no botão Fork no topo da página. Isso vai criar uma versão de todo o repositório na sua conta.

fork-1

2. Clone o repositório

Quando o repositório estiver na sua conta, clone-o em sua máquina para trabalhar com ele localmente.

Para clonar, clique no botão Clone e copie o link.

clone1

Abra o terminal e execute o seguinte comando. Ele clonará o repositório localmente.

$ git clone [link do github]
clone2

Agora, configuramos uma cópia da branch master do repositório principal no projeto on-line.

Precisamos ir para esse diretório clonado. Para isso, executamos este comando:

$ cd [NOME DO REPOSITORIO]
clone3

3. Crie uma branch

É uma boa prática criar uma outra branch ao trabalhar com repositórios, seja em um pequeno projeto ou contribuindo para o trabalho de um grupo.

O nome da branch deve ser curto e deve refletir o trabalho que estamos fazendo

Agora crie uma branch usando o comando git checkout:

$ git checkout -b [Nome da branch]
branch1

4. Faça mudanças e faça o commit delas

Faça alterações essenciais no projeto e salve-o.

Em seguida, execute  git status e você verá as alterações.

status

Adicione essas alterações na branch que você acabou de criar usando o comando  git add:

$ git add .
add1

Agora, confirme essas alterações usando o comando git commit :

$ git commit -m "Adicionando um artigo à semana 02 dos artigos da semana."
commit

5. Faça o push das mudanças para o GitHub

Para enviar as alterações para o GitHub, precisamos identificar o nome do repositório remoto.

$ git remote
remote

O nome deste repositório remoto é "origin".

Depois de identificar o nome do repositório remoto, podemos enviar/fazer um push com segurança essas alterações para o GitHub.

git push origin [Nome da branch]
branch2

6. Criando o pull request

Vá para o seu repositório no GitHub e você verá um botão dizendo "Compare & pull request". Clique nele.

compare

Forneça os detalhes necessários sobre o que você fez (você pode fazer referência às issues usando "#"). Agora, envie o pull request.

Parabéns! Você acaba de fazer o seu primeiro pull request.🎉

pullRequest-1

Se seu pull request for aceito, você receberá um e-mail.

7. Sincronize a sua versão com a branch master

Antes de enviar qualquer pull request para o repositório original, você deve sincronizar seu repositório com o original.

Mesmo se você não enviar um pull request para o repositório original, é melhor sincronizar seu repositório com o original, pois alguns recursos adicionais e correções de bugs podem ter sido feitos desde que você o copiou.

Siga estas etapas para atualizar/sincronizar essas alterações em sua branch master:

  1. Primeiro, verifique em qual branch você está.
$ git branch
branch4

Ele listará todas as branches e indicará a branch atual ou ativa em verde.

2. Alterne para a branch master.

$ git checkout master
master9

3. Adicione o repositório original como um repositório upstream.

Para extrair as alterações do repositório original para sua versão copiada, você precisa adicionar o repositório Git original como um repositório upstream.

$ git remote add upstream [HTTPS]

Aqui, [HTTPS] é o URL que você deve copiar do repositório do proprietário.

owner-repo
remote-add

4. Faça o fetch/obtenha o repositório.

Busque todas as alterações do repositório original. Os commits para o repositório original serão armazenados em uma branch local chamada upstream/master.

$ git fetch upstream
fetch

5. Faça o merge/mescle as branches.

Mescle as alterações do upstream/master em sua branch master local. Isso fará com que a branch master do seu fork seja sincronizada com o repositório upstream sem perder suas alterações locais.

$ git merge upstream/master

6. Faça o push/envie mudanças ao GitHub

Neste ponto, sua branch local é sincronizada com a branch master do repositório original. Se você deseja atualizar o repositório do GitHub, precisa enviar suas alterações.

$ git push origin master

Observação: depois de sincronizar o fork da sua branch master copiada, você pode remover esse repositório remoto, se desejar, mas você também precisará atualizar/sincronizar seu repositório no futuro, então é melhor mantê-lo.

remote-dlt
$ git remote rm [Nome remoto]

8. Delete a branch desnecessária

As branches são criadas para um propósito especial. Uma vez que esse objetivo é alcançado, essas branches não são necessárias, então você pode excluí-las.

$ git branch -d [Nome da branch]
delete

Você também pode excluir a versão dele no GitHub.

git push origin --delete [Nome da branch]
last

Conclusão

O GitHub é uma ferramenta poderosa para controlar o histórico de versões. Todos podem contribuir com projetos open source fazendo pull requests. Contribuições nem sempre são código – existem outras maneiras de contribuir também.

Por fim, devo dizer que você não deve se preocupar se seus pull requests forem rejeitados. Os mantenedores gastam muito tempo melhorando seus projetos e sabem muito mais sobre seus projetos do que nós. Portanto, não se preocupe se sua solicitação não for mesclada.

Mantenha-se forte, mantenha-se positivo e nunca desista.
― Roy T. Bennett, The Light in the Heart

Este artigo foi publicado originalmente no Medium.

Você pode entrar em contato com o autor e se conectar com ele pelo Twitter.
Continue contribuindo com o mundo open source!