À mon avis, la méthode la plus simple est « ne pas faire » :-)
Au lieu de cela, tournez votre git stash
contenu dans une branche de son propre:
git stash branch newbr
Maintenant vous avez une nouvelle branche newbr
, avec l'index prêt à commettre (si vous aviez les articles git add
ed à l'index) et l'arbre de travail modifié selon la stash, prêt à être git add
ed et validé. Si vous aviez auparavant ajouté des choses, allez-y et engagez-le maintenant, puis ajoutez tout le reste et recommencez. Sinon, ajoutez tout maintenant et commettez. Maintenant, vous avez une nouvelle branche newbr
avec un ou deux commits dessus-combien dépend de combien de git commit
s vous venez de faire-qui se joint à n'importe quel commit était en place lorsque vous avez fait le git stash
.
Vous pouvez maintenant créer une nouvelle branche différente à partir d'un point de départ différent, si c'est ce que vous voulez, et utiliser git cherry-pick
pour ramener ces commits, puis rejeter la nouvelle branche. Ou, vous pouvez utiliser git rebase -i
(avec les arguments <upstream>
et, facultativement, --onto
) pour copier les commits ailleurs d'une manière habituelle, en abandonnant les validations d'origine une fois les copies terminées. Ou, si le point de départ existant de newbr
est ce que vous vouliez après tout, vous êtes déjà tous ensemble.
Cela dit, si vous avez vraiment ne veulent vérifier que la version travail arborescence des fichiers en conflit, en ignorant complètement la version actuelle de ces fichiers, vous pouvez le faire assez facilement. La chose à retenir est que le nom de référence stash
(ou [email protected]{N}
pour un certain nombre N) fait référence à la w
ORK-arbre commettre ce git stash
fait quand il a sauvé la i
et w
commits du stash bag. Par conséquent:
git checkout stash -- path/to/file
extraits de la version path/to/file
, l'écriture w
à travers l'index (résolution où toute fusion en conflit), en ignorant complètement la version HEAD
de ce fichier.
(Les i
ndex-COMMIT versions des fichiers sont en stash^2
, et s'il y a un untracked/all-files engagent, ces fichiers sont en stash^3
, comme je l'ai mentionné dans that other answer. Alors que w
est engager techniquement une fusion, il est pas une fusion normale, et la validation de tous les fichiers en particulier est très inhabituel, car il a seulement ces fichiers, et aucun des fichiers index/arbre de travail.)