Remover um arquivo modificado da solicitação pull

102

Tenho 3 arquivos modificados (nenhum arquivo novo) em uma solicitação de pull no momento.

Gostaria de remover um desses arquivos da solicitação de pull, de modo que a solicitação de pull contenha apenas alterações em dois arquivos e deixe o terceiro em seu estado original intocado.

Tentei algumas coisas (verificando a versão original do arquivo, etc ...), mas ainda aparece como um arquivo alterado no PR.

Existe uma solução para isso?

jlee
fonte
Se as modificações no arquivo estão em seus próprios commits, você pode fazer um rebase interativo e remover os commit (s) que afetam o arquivo que você deseja inalterado, e então fazer um push forçado para seu branch. O Github deve detectar isso automaticamente.
Dentych

Respostas:

238

Mude para o branch de onde você criou a solicitação pull:

$ git checkout pull-request-branch

Substitua o (s) arquivo (s) modificado (s) com o arquivo em outro branch, vamos considerá-lo mestre :

git checkout origin/master -- src/main/java/HelloWorld.java

Confirme e envie para o controle remoto:

git commit -m "Removed a modified file from pull request"
git push origin pull-request-branch
Arpit Aggarwal
fonte
4
Não funciona, mostrando o erro: pathspec '{file / path.js}' não corresponde a nenhum arquivo conhecido pelo git.
raftaar1191,
8
Está funcionando e é uma solução comprovada, basta verificar seu caminho corretamente
Pavan T
2
isso funciona para os arquivos ao redor do arquivo em que desejo executar a ação ... então não acho que seja algo errado com o caminho
Tim Boland
Com esse método, você sobrescreve o arquivo e perde o trabalho feito nele, certo? Você não pode mantê-lo para outra filial e / ou outro PR?
Ernest Jones,
1
@ArpitAggarwal, isso está funcionando bem. Muito obrigado.
Chaklader Asfak Arefe
10

Você gostaria de alterar o commit e então fazer um force push que atualizará o branch com o PR.

Aqui está como eu recomendo que você faça isso:

  1. Feche o PR para que quem está revisando não o puxe até que você faça suas alterações.
  2. Faça um soft reset para o commit antes de sua mudança indesejada (se este for o último commit que você pode usar git reset --soft HEAD^ou se for um commit diferente, você deve substituir 'HEAD ^' pelo id do commit)
  3. Descartar (ou desfazer) quaisquer alterações no arquivo que você não pretendia atualizar
  4. Faça um novo commit git commit -a -c ORIG_HEAD
  5. Force Push para seu branch
  6. Reabrir solicitação de pull

Agora que seu branch foi atualizado, o Pull Request incluirá suas alterações.

Aqui está um link para a documentação do Gits, onde eles têm um bom exemplo em Desfazer um commit e refazer .

Keif Kraken
fonte
-5

Uma solicitação pull é apenas isso: uma solicitação para mesclar um branch em outro.

Sua solicitação de pull não "contém" nada, é apenas um marcador dizendo "por favor, mescle este branch naquele".

O conjunto de mudanças que o PR mostra na IU da web são apenas as mudanças entre o branch de destino e o seu branch de recurso. Para modificar sua solicitação pull, você deve modificar seu branch de recurso, provavelmente com um push forçado para o branch de recurso.

No seu caso, você provavelmente desejará alterar seu commit. Não tenho certeza sobre sua situação exata, mas alguma combinação de rebase interativo add -pdeve resolver você.

Chris Kitching
fonte