J'ai besoin d'un moyen d'exporter une modification cachée vers un autre ordinateur.
Sur Computer1 je l'ai fait
$ git stash save feature
J'essaie d'obtenir le correctif caché dans un fichier, puis de l'importer sur un autre ordinateur
$ git stash show -p > patch
Cette commande me donne un fichier que je peux déplacer vers un autre ordinateur où ce dépôt est cloné, mais la question est de savoir comment l'importer à nouveau en tant que stash.
Merci
git stash save
est désormais déconseillé au profit degit stash push
Réponses:
Vous pouvez appliquer un fichier de correctif (sans encore valider les modifications) en exécutant simplement
Ensuite, vous pouvez simplement créer une nouvelle cachette à partir du répertoire de travail actuel:
la source
git stash show "stash@{0}" -p > patch
au lieu de la deuxième commande shell de l'OP.stash@{0}
..vous pouvez également créer une branche à partir de votre stash (sur l'ordinateur 1), en utilisant
Validez vos modifications:
puis ajoutez-le en tant que télécommande sur l'ordinateur 2:
vous pouvez maintenant récupérer les informations à distance en utilisant
vous pouvez maintenant importer le commit comme vous le souhaitez; en utilisant git cherry-pick , git rebase ou tout ce que vous voulez ... Si vous voulez qu'il ressemble à ce que vous venez de faire git stash appliquer ; vous pouvez utiliser git cherry-pick --no-commit.
Si vous n'avez pas de connexion directe entre ordinateur1 et ordinateur2; vous pouvez utiliser une télécommande (comme github ou quelque chose de similaire):
et sur ordinateur2:
la source
git stash list --oneline
), donc vous n'avez pas techniquement à appliquer le stash à un nouvel objet de commit. En d'autres termes, la création d'une nouvelle branche n'est pas nécessaire. Cependant, pousser une cachette directement sur une télécommande est pour le moins délicat.Vous pouvez également exporter la totalité des stashes locaux vers un autre compte comme suit
git pull
sur votre ancien et nouveau répertoire git pour vous assurer que les deux ont les dernières modifications.la source
Comment exporter Stash dans SourceTree:
Appliquez-y votre cachette et faites un commit
Cliquez sur votre commit et faites-en un patch, emportez le fichier patch avec vous.
Accédez à un autre référentiel, sélectionnez la même branche parent que celle que vous venez d'utiliser dans 1)
Actions / Appliquer le correctif, sélectionnez Mode: modifier les fichiers de copie de travail, appuyez sur Appliquer le correctif maintenant que vous avez des modifications non validées du correctif dans votre environnement de travail actuel
Créer un nouveau Stash pour le dépôt actuel
la source
Vous pouvez créer une cachette en tant que fichier de correctif à partir d'une machine, puis partager ce fichier de correctif avec d'autres machines.
Création de la cachette en tant que patch
Le "stash @ {0}" est la référence du stash. Il créera un fichier patch avec le dernier stash. Si vous souhaitez utiliser une commande différente
$ git stash list
pour voir votre liste de masques et sélectionner celui que vous souhaitez corriger.Application du patch
Transférez maintenant cette cachette sur une autre machine et collez-la dans le dossier racine de votre projet. Exécutez ensuite cette commande
S'il y a une erreur et que vous souhaitez inverser le changement
la source
Une autre option consiste à accéder
rsync
au.git
dossier d'un ordinateur à un autre ordinateur.rsync
traite uniquement les modifications de fichiers (plus rapide qu'une copie).Un inconvénient de cette approche est que les configurations seraient également écrasées, ce qui peut ne pas être souhaitable si vous exécutez différentes configurations .git entre les deux machines. Mais vous pouvez surmonter cela en excluant les fichiers avec l'
--exclude
option inrsync
.Dans l'ensemble, je pense qu'une solution native Git est plus propre, mais ce
rsync
hack pourrait être bien pour quelqu'un pressé qui pourrait être plus familier avec rsync que git.la source
La commande de démarrage du post d'origine:
n'a pas fonctionné pour moi (pour une raison quelconque, il a créé des fichiers correctifs inutilisables). Au lieu de cela, j'ai dû:
pour chaque stash que je voulais transférer. Ensuite, j'ai placé le référentiel «parent» dans le fichier: /// portée du référentiel «enfant», et j'ai fait ce qui suit, pour chaque validation de stockage:
C'est plus complexe mais ça a fait l'affaire pour moi.
la source
Si vous souhaitez déplacer vos modifications d'une machine à une autre, vous pouvez toujours valider vos modifications sur votre machine, puis effectuer une réinitialisation logicielle sur leur machine.
Bureau
git commit -m "-stash-"
Cuisine
git reset --soft HEAD~1
la source
Une stash est une validation de fusion spéciale de l'arborescence de travail entre la validation de base et l'index. Une façon pourrait être de les enregistrer chacun sous forme de correctifs séparés, de retirer le premier parent de la cachette, de restaurer l'index et l'arborescence de travail des deux correctifs et enfin de restaurer la cachette (il semble qu'une réponse va dans ce sens).
Cela est nécessaire pour recréer entièrement toutes les informations de la cachette, et si vous ne vous souciez pas de cela, vous devez au moins extraire le premier parent de la cachette avant de restaurer pour éviter les conflits et garder une trace de l'endroit où la cachette a été créée.
C'est ce que j'ai fait pour restaurer complètement toutes les cachettes d'un dépôt à un autre. Si vous ne pouvez pas les avoir sur le même ordinateur, vous pouvez enregistrer les balises de dissimulation dans un ensemble après les avoir créées et copier la liste des références et l'ensemble sur l'ordinateur cible.
De la racine du dépôt d'origine:
stash_
+ le (s) nombre (s) dans la référence de sauvegarde logique)NB: Cela nécessite bash ou un shell compatible (ksh, zsh devrait faire ...) Vous pouvez également incrémenter une variable, ex
stash_$((i++))
si votre shell ne supporte pas${param//pattern}
Maintenant dans le nouveau repo, pour chaque ref:
la source