165 votes

Suppression d'un fichier modifié de la demande de pull

J'ai 3 fichiers modifiés (pas de nouveaux fichiers) dans une demande de retrait pour le moment.

Je voudrais supprimer l'un de ces fichiers de la demande de retrait, de sorte que la demande de retrait ne contienne que les modifications de deux fichiers et laisse le troisième dans son état original, non modifié.

J'ai essayé plusieurs choses (vérifier la version originale du fichier, etc...) mais il apparaît toujours comme un fichier modifié dans le PR.

Existe-t-il une solution à ce problème ?

1 votes

Si les modifications au fichier sont dans leur propre commit(s), vous pouvez faire un rebase interactif et supprimer le(s) commit(s) affectant le fichier que vous voulez inchangé, et ensuite faire un force push à votre branche. Github devrait le détecter automatiquement.

381voto

Arpit Points 11903

Passez à la branche à partir de laquelle vous avez créé la demande de pull :

$ git checkout pull-request-branch

Ecraser le(s) fichier(s) modifié(s) avec le fichier d'une autre branche, considérons qu'il s'agit de maître :

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

S'engager et le pousser vers la télécommande :

git commit -m "Removed a modified file from pull request"
git push origin pull-request-branch

7 votes

Not Working m'affiche l'erreur suivante : pathspec '{file/path.js}' ne correspond à aucun fichier connu de git.

10 votes

C'est une solution qui fonctionne et qui a fait ses preuves, il suffit de vérifier votre chemin correctement.

2 votes

Cela fonctionne pour les fichiers autour du fichier sur lequel je veux réellement effectuer l'action... donc je ne pense pas qu'il y ait un problème avec le chemin d'accès

14voto

Keif Kraken Points 1164

Vous devez modifier le commit et ensuite faire un force push qui mettra à jour la branche avec le PR.

Voici comment je vous recommande de procéder :

  1. Fermez le PR afin que la personne qui le révise ne le prenne pas en compte avant que vous n'ayez apporté vos modifications.
  2. Faites un Soft reset au commit précédant votre changement indésirable (si c'est le dernier commit vous pouvez utiliser git reset --soft HEAD^ ou s'il s'agit d'un commit différent, vous voudrez remplacer 'HEAD^' par l'identifiant du commit)
  3. Rejeter (ou annuler) toute modification du fichier que vous n'aviez pas l'intention de mettre à jour.
  4. Faire un nouveau commit git commit -a -c ORIG_HEAD
  5. Forcez le Push sur votre branche
  6. Ré-ouvrir la demande de Pull

Maintenant que votre branche a été mise à jour, la Pull Request inclura vos changements.

Voici un lien vers la documentation de Gits où il y a un très bon exemple sous Annuler un commit et le refaire .

1 votes

Étape 6. Ré-ouvrir la demande de pull était le problème pour moi lorsque j'utilisais bitbucket. Je pouvais voir certaines modifications que j'avais en fait supprimées. La réouverture de la demande de modification a permis de résoudre le problème.

9voto

Umar Asghar Points 982

Passez à la branche dans laquelle vous voulez rétablir le fichier.

C'est la commande pour cela.

Il suffit de choisir l'emplacement et la branche où le fichier doit être restauré.

git <remote>/<branch> -- <file_path_from_project_root_folder>.

Dans mon cas, c'était

git checkout origin/master -- .github/workflows/ci.yml

6voto

Sidu Points 1

Passez à la branche de fonctionnalité à partir de laquelle vous avez créé la demande de retrait :

exemple : $ git checkout pull-request-branch

Écraser le(s) fichier(s) modifié(s) avec le fichier d'une autre branche :

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

S'engager et le pousser vers la télécommande :

$git commit -m "removed a modified file from PR"
$git push

-3voto

Suppression d'un fichier de la pull request mais pas de votre dépôt local.

  1. Allez dans votre branche à partir de laquelle vous avez créé la demande et utilisez les commandes suivantes

git checkout -- c : \temp..... suivant git checkout origin/master -- c : \temp... u remplacer origin/master par n'importe quelle autre branche. Suivant git commit -m c : \temp..... Suivant git push origine

Note : pas de guillemets simples ou doubles pour le chemin de fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X