Supposons que deux ensembles de modifications soient effectués dans un projet versionné par git. Un ensemble est mis en scène et l'autre ne l'est pas.
Je voudrais revérifier les modifications par étapes en exécutant mon projet dans cet état (avant la validation). Quel est un moyen simple de ranger toutes les modifications non programmées et de ne les laisser que par étapes? J'ai donc besoin que les modifications non mises en scène disparaissent de mon projet, mais soient stockées quelque part pour un travail ultérieur.
Cela ressemble beaucoup à une git stash
commande. Mais git stash
mettrait à la fois les changements non mis en scène et par étapes loin de mon projet. Et je ne trouve pas quelque chose comme git stash uncached
.
-k
option), soit fastidieuses à utiliser.Réponses:
Mise à jour 2:
Je ne sais pas pourquoi les gens se plaignent de cette réponse, cela semble fonctionner parfaitement avec moi, pour les fichiers non extraits, vous pouvez ajouter le
-u
drapeauLa commande complète devient
git stash --keep-index -u
Et voici un extrait de l'
git-stash
aideEt ceci est un gif de son apparence:
Mettre à jour:
Même si c'est la réponse choisie, beaucoup ont souligné que la [réponse ci-dessous] (https://stackoverflow.com/a/34681302/292408) est la bonne, je recommande de la vérifier.J'ai testé à nouveau ma réponse aujourd'hui (31/1/2020) par rapport à la version git
2.24.0
, et je pense toujours que c'est correct, j'ai ajouté une petite note ci-dessus à propos des fichiers non suivis. Si vous pensez que cela ne fonctionne pas, veuillez également mentionner votre version de git.Ancienne réponse :
si l'
--keep-index
option est utilisée, toutes les modifications déjà ajoutées à l'index sont laissées intactes:De la documentation de
git-stash
:Mais, si vous souhaitez uniquement vérifier visuellement les modifications par étapes, vous pouvez essayer
difftool
:la source
git stash [-p|--patch]
ce qui ressemble à un stockage interactif. Deman git stash
"Avec --patch, vous pouvez sélectionner de manière interactive des morceaux de la différence entre HEAD et l'arbre de travail à cacher."add -p
,checkout -p
et jereset -p
n'ai jamais essayéstash -p
, merci pour le conseil: DLa réponse acceptée cache également des changements par étapes, comme quelques-uns l'ont souligné. Voici un moyen de le faire sans obtenir vos modifications par étapes dans la réserve.
L'idée est de faire une validation temporaire de vos modifications par étapes, puis de cacher les modifications non organisées, puis de désactiver la validation temporaire:
À ce stade, vous aurez une réserve de vos modifications non préparées et vous n'aurez que vos modifications par étapes présentes dans votre copie de travail.
la source
--keep-index
option dans la réponse acceptée actuelle bloque toujours ce qui se trouve dans l'index, elle le conserve également dans l'index. Alors c'est dupliqué, et l'hilarité s'ensuit.git add .
étape pourrait souhaiter être amélioréegit add --all
car cela devrait également saisir les fichiers dans un répertoire au-dessus du répertoire de travail actuel.J'ai trouvé que la réponse marquée ne fonctionnait pas pour moi car j'avais besoin de quelque chose qui ne cachait vraiment que mes modifications non mises en scène. La réponse marquée
git stash --keep-index
,, bloque les modifications par étapes et non. La--keep-index
pièce laisse simplement l'index intact sur la copie de travail. Cela fonctionne pour OP, mais uniquement parce qu'il a posé une question légèrement différente de celle pour laquelle il voulait réellement la réponse.Le seul vrai moyen que j'ai trouvé pour cacher les modifications non mises en scène est de ne pas utiliser du tout la réserve:
git checkout -- .
fonctionnera également à la place deapply -R
.Travail Travail travail...
la source
git version 2.6.1.windows.1
,git stash -k
travaillé comme décrit.Git: Stash les modifications non organisées
Cela cachera toutes les modifications que vous n'avez pas ajoutées:
Notez que les fichiers nouvellement créés (et non ajoutés) resteront dans votre répertoire de travail à moins que vous n'utilisiez également le
-u
commutateur.De plus, votre répertoire de travail doit être propre (c'est-à-dire que toutes les modifications doivent être ajoutées) lorsque vous git stash pop plus tard.
http://makandracards.com/makandra/853-git-stash-unstaged-changes
la source
git stash --keep-index
. Les fichiers intermédiaires sont inclus dans la réserve.