git supprimer le fichier de stash

J'ai une cachette avec un tas de fichiers.

Mais je ne peux pas appliquer ma cachette à cause d'un fichier en conflit. J'ai identifié le fichier problématique dans ma cachette et je veux le supprimer.

Comment puis-je supprimer un seul fichier d'une réserve sans détruire la chose entière?

23
demandé sur SQB 2014-03-29 00:25:08

4 réponses

Un stash est un commit (ou vraiment, deux ou même parfois trois commits) et vous ne pouvez pas changer un commit. La réponse littérale à votre question, alors, est "vous ne pouvez pas". Heureusement, vous n'avez pas besoin de .

Vous dites que vous ne pouvez pas appliquer votre stash à cause d'un fichier en conflit. Mais vous peut l'appliquer, vous obtenez juste un conflit de fusion. Tout ce que vous devez faire est de résoudre le conflit de fusion.

Disons que le conflit est dans le fichier README.txt, juste pour qu'il y ait quelque chose à écrire ici.

Si vous voulez le résoudre en conservant la version on-branch, appliquez la Réserve, puis consultez la version on-branch pour résoudre le conflit:

git stash apply
git checkout --ours -- README.txt  # or git checkout HEAD -- README.txt

Si vous voulez conserver la version in-stash, extrayez celle-ci:

git checkout --theirs -- README.txt # or git checkout stash -- README.txt

Ou, utilisez n'importe quel ancien outil de résolution de fusion (j'utilise juste un éditeur de texte), puis "git add" le résultat.

Une fois que vous avez terminé avec la cachette, git stash drop "oubliera" les commits qui composent la cachette. (Ne le faites pas jusqu'à ce que vous soyez sûr que vous êtes fait avec elle; il est très difficile de le récupérer par la suite.)

17
répondu torek 2014-03-28 21:00:26

Il existe une solution de contournement pour cette situation:

  1. Enregistrez votre planque en tant que fichier patch:

    $ git stash show -p > stash.patch
    
  2. Appliquez ce patch, en ignorant les conflits (il vous sera demandé de résoudre les conflits, il suffit d'ignorer les fichiers manquants):

    $ patch -p1 < stash.patch
    

N'oubliez pas de nettoyer stash.patch après!

9
répondu Dmytro Sirenko 2016-10-04 10:25:48
  1. Stockez vos modifications non validées.
  2. Appliquez votre cachette d'origine
  3. supprimer le fichier
  4. 4 Appliquez la réserve contenant vos modifications non validées.
1
répondu Francisco Aguilera 2018-07-12 18:42:12

Supprimez le fichier requis de votre base de code locale, puis poussez-le à stash. Les changements seront reflétés et vos fichiers seront supprimés de stash.

0
répondu viper03 2016-10-21 11:16:29