J'aimerais pouvoir stocker uniquement les modifications à partir d'un seul fichier:
git stash save -- just_my_file.txt
Ce qui précède ne fonctionne pas bien. Des alternatives?
Je pense stash -p
est probablement le choix que vous souhaitez, mais si jamais vous rencontriez des problèmes encore plus délicats à l’avenir, rappelez-vous que:
Stash
n'est en réalité qu'une alternative très simple aux ensembles légèrement plus complexes que branch
. Stash est très utile pour déplacer rapidement des objets, mais vous pouvez accomplir des tâches plus complexes avec des branches sans trop de maux de tête et de travail.
# git checkout -b tmpbranch
# git add the_file
# git commit -m "stashing the_file"
# git checkout master
allez et faites ce que vous voulez, puis plus tard simplement rebase
et/ou merge
le tmpbranch. Ce n'est vraiment pas que beaucoup de travail supplémentaire lorsque vous devez faire un suivi plus minutieux que ce que permet stash.
Vous pouvez cacher de manière interactive des lignes simples avec git stash -p
(analogue à git add -p
).
Cela ne prend pas un nom de fichier, mais vous pouvez simplement ignorer d'autres fichiers avec d jusqu'à ce que vous atteigniez le fichier que vous voulez stocké et que tous les changements y sont stockés avec a.
La meilleure option est de tout organiser, sauf ce fichier, et d'indiquer à stash de conserver l'index avec git stash save --keep-index
, stockant ainsi votre fichier non mis en scène:
$ git add .
$ git reset thefiletostash
$ git stash save --keep-index
Comme Dan le fait remarquer, thefiletostash
est le seul à être réinitialisé par la réserve, mais il bloque également les autres fichiers, de sorte qu'il ne correspond pas exactement à ce que vous voulez.
Si vous ne souhaitez pas spécifier de message avec vos modifications stockées, transmettez le nom du fichier après un double tiret.
$ git stash -- filename.ext
S'il s'agit d'un fichier non suivi/nouveau, vous devez d'abord le mettre en scène.
Cependant, si vous faites voulez spécifier un message, utilisez Push
.
git stash Push -m "describe changes to filename.ext" filename.ext
Les deux méthodes fonctionnent dans les versions 2.13+ de git
Juste au cas où vous voudriez vraiment dire "ignorer les modifications" à chaque fois que vous utiliserez "git stash" (et n'utilisez pas vraiment git stash pour le stocker temporairement), dans ce cas, vous pouvez utiliser
git checkout -- <file>
Notez que git stash n’est qu’une alternative simple et rapide aux branches et aux tâches.