Exporter un cache vers un autre ordinateur

J’ai besoin d’un moyen d’exporter un changement stocké vers un autre ordinateur.

Sur Computer1 je l’ai fait

$ git stash save feature 

J’essaie d’obtenir le patch caché dans un fichier, puis l’importer sur un autre ordinateur

 $ git stash show -p > patch 

Cette commande me donne un fichier que je peux déplacer sur un autre ordinateur sur lequel ce repository est cloné, mais la question est de savoir comment l’importer à nouveau.

Merci

Vous pouvez appliquer un fichier de correctif (sans valider les modifications) en exécutant simplement

 git apply patchfile 

Ensuite, vous pouvez simplement créer une nouvelle réserve à partir du répertoire de travail actuel:

 git stash 

alternativement vous pouvez créer une twig de votre réserve (sur l’ordinateur 1), en utilisant

 git stash branch stashed_changes_branch 

commettez vos changements:

 git commit -a 

puis ajoutez-le en tant que télécommande sur l’ordinateur 2:

 git remote add pc1 user@computer1:/path/to/repo 

maintenant vous pouvez récupérer les informations à distance en utilisant

 git fetch pc1 

vous pouvez maintenant importer le commit comme vous le souhaitez; utiliser git cherry-pick , git rebase ou tout ce que vous voulez … Si vous voulez que ça ressemble à ce que vous avez fait, git stash s’applique ; 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):

 git push origin stashed_changes_branch 

et sur ordinateur2:

 git fetch 

Sinon, vous pouvez exporter la totalité des stashes locaux vers un autre ordinateur, comme suit

  • git pull à la fois votre ancien et votre nouveau répertoire git pour vous assurer que les deux changements sont les plus récents.
  • copier le dossier .git de l’ancien répertoire git vers un nouveau référentiel

Une autre option consiste à .git dossier .git d’un ordinateur à un autre ordinateur. rsync ne traite que les modifications de fichiers (plus rapide qu’une copie).

Un inconvénient de cette approche est que les configs seraient également écrasés, ce qui peut ne pas être souhaitable si vous exécutez différentes config .git entre les deux machines. Mais vous pouvez surmonter cela en excluant les fichiers avec l’option --exclude dans rsync .

Dans l’ensemble, je pense qu’une solution Git native est plus propre, mais ce hack rsync pourrait être intéressant pour quelqu’un pressé qui pourrait être plus familier avec rsync que git.

La commande de démarrage à partir du message d’origine:

 git stash show -p stash@{x} > patch_file 

n’a pas fonctionné pour moi (pour une raison quelconque, il a créé des fichiers de correctifs inutilisables). Au lieu de cela je devais:

 git stash apply stash@{x} git commit 

pour chaque cachet que je voulais transférer. Ensuite, j’ai placé le référentiel ‘parent’ dans le fichier: /// reach du référentiel ‘child’, et ai fait ce qui suit pour chaque commit de cache:

 git fetch file:///path_to_parent_git && git cherry-pick commit_sha git reset --soft HEAD^ git stash save my_new_stash_on_child 

Ceci est plus complexe mais a fait l’affaire pour moi.

Si vous souhaitez déplacer vos modifications d’une machine à une autre, vous pouvez toujours valider vos modifications sur votre ordinateur, puis procéder à une réinitialisation logicielle de leur ordinateur.

Bureau

git commit -m "-stash-"

Cuisine

git reset --soft HEAD~1