1
resposta

Git Hub - Pull Requests

Boa noite Srs, (PR = Pull Request)

Estou trabalhando num projeto que dei um Fork. Notei que por padrão, o git hub quando recebe os commits, adiciona automaticamente ao PR que está aberto. Minha ideia era adicionar poucos commits em cada PR. Exemplo: tenho 4 commits e quero criar 2 PR. Então enviaria 2 commits e criaria o PR #1 e enviaria mais 2 commits e colocaria no PR #2. Isso é possível?

1 resposta

Oi, Uberlei, tudo bem?

Peço desculpas pela demora em responder!

É possível criar dois Pull Requests (PR#1 e PR#2) em um mesmo projeto. Contudo há duas situações que precisamos considerar para estabelecer os procedimentos adequados.

Situação 1

Em um dos cenários os quatro commits que você deseja fazer ainda não foram feitos. Neste caso você pode seguir o seguinte procedimento:

  • Faça as modificações que você deseja;

  • Realize os dois primeiros commits em uma branch separada da branch principal. Suponha que desejamos criar a branch pr1, utilizamos o comando:

    git checkout -b pr1
  • Em seguida suba os arquivos para o repositório remoto por meio do comando:

    git push origin pr1

    Perceba que o nome padrão do repositório remoto é origin e que em seguida é colocado o nome da branch que queremos criar.

    A partir disso, crie o Pull Request selecionando a branch main no campo de destino e a branch pr1 no campo de envio.

  • Repita o mesmo procedimento para o segundo Pull Request que deseja criar.

Situação 2

Neste caso os quatro commits estão prontos e você quer separá-los dois a dois. Nesse cenário é necessário seguir o procedimento abaixo:

  • Precisaremos criar uma branch (pr1) por meio do comando:

    git checkout -b pr1
  • Estando na branch pr1, vamos usar o comando git resetpara voltar até o commit inicial:

    git reset --hard <hash do commit>

    Captura de tela colorida do terminal do Git Bash, apresentando linhas de código referentes ao uso do comando git reset --hard

    Para ter acesso a hash do commit para o qual queremos voltar precisamos utilizar o comando:

    git log --oneline

    E a partir disso copiar o código de seis dígitos que aparece ao lado dos commits, clicando com o botão direito do mouse em copy e depois clicando novamente com o botão direito do mouse em paste.

    Captura de tela colorida do terminal do Git Bash, apresentando uma lista de commits obtidos por meio do comando git log --oneline

  • Depois iremos usar o comando git cherry-pick responsável por pegar um commit de um branch e aplicá-lo em outra. Dessa forma, selecionamos os commits que queremos trazer para a branch atual:

    git cherry-pick <hash do commit>

    Captura de tela colorida do terminal do Git Bash, apresentando o resultado do uso do comando git cherry-pick sem conflitos entre as versões do arquivo

    Iremos fazer isso com todos os commits que queremos nesta branch.

    Podem acontecer alguns conflitos quando trabalharmos nos arquivos.

    Captura de tela colorida do terminal do Git Bash, apresentando o resultado do uso do comando git cherry-pick com erros de conflito entre as versões do arquivo

    Podemos corrigi-los, basta ir no editor de código-fonte que você está utilizando para desenvolver o seu projeto, como por exemplo o Visual Studio Code (VS Code) ou o Sublime Text, e apagar a parte que não deseja manter, clicar em salvar e utilizar o comando git commit -a. Uma segunda tela vai se abrir e você só precisa clicar no botão Esc e digitar o comando :x.

  • Por fim, devemos subir os arquivos para o repositório remoto através do comando git push e realizar o Pull Request, como está descrito na situação 1.

    O mesmo procedimento deve ser feito para o segundo Pull Request que você deseja fazer, portanto, repita o processo descrito até aqui.

Vale ressaltar que ao criar uma Pull Request, é interessante que os commits que fazem parte das modificações que desejamos implementar sejam referentes a um mesmo assunto, pois ao utilizar esse recurso buscamos resolver um problema específico, adicionar novas funcionalidades entre outras alterações para complementar ou refatorar um projeto.

Outro ponto relevante ao escrever os commits que compõem as mudanças que estamos agregando ao projeto é ter certeza de enviar um número reduzido de commits de modo que, a pessoa que fará a revisão das Pull Request tenha um número menor de commits para analisar e adicionar ao projeto principal.

Com isso, ao realizar duas Pull Requests lembre-se de separar os assuntos que deseja abordar para que cada uma delas trate de questões específicas e que ao realizar os commits é interessante agrupar um mesmo número de modificações em um único commit, de modo a eliminar mensagens de commit desnecessárias.

Espero ter ajudado. Caso tenha outras dúvidas, estarei à disposição!

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software