Est-il possible de pusher un stash ?
Non, il n’est pas possible de pusher un stash.
Il faut soit en faire un patch et envoyer ce fichier, soit (ma solution préférée) appliquer le Stash sur une nouvelle branche et pousser cette branche.
En fait si, mais d’une facon detournée. Un stash est stocké par git comme un commit, et on peut très bien créer une branche à partir d’un stash. Exemple:
Commençons par créer un nouveau repository pour mettre tout ça en oeuvre :
~$ git clone [email protected]:ubermuda/test
Cloning into 'test'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
~$ cd test/
Créons ensuite un nouveau fichier avec du contenu plus ou moins random, puis commitons le :
test (master #) $ echo foo > README.md
test (master #%) $ git add .; git commit -m "initial commit"
[master (root-commit) 93a1be7] initial commit
1 file changed, 1 insertion(+)
create mode 100644 README.md
Changeons son contenu, et stashons la modification :
test (master) $ echo bar > README.md
test (master *) $ git stash
Saved working directory and index state WIP on master: 93a1be7 initial commit
HEAD is now at 93a1be7 initial commit
Voilà la partie intéressante. Vérifions l’état du graph de notre repo :
test (master) $ git log --all --graph --oneline --decorate
* 236ada7 (refs/stash) WIP on master: 93a1be7 initial commit
|\
| * 142767c index on master: 93a1be7 initial commit
|/
* 93a1be7 (HEAD, master) initial commit
Le commit qui nous intéresse est 236ada7
. Nous pouvons créer une branche qui part de ce commit :
test (master) $ git branch bar 236ada7
Et la checkouter :
test (master) $ git checkout bar
Switched to branch 'bar'
test (bar) $ cat README.md
bar
Et maintenant on peut la pusher :
test (bar) $ git push origin bar
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (7/7), 488 bytes | 0 bytes/s, done.
Total 7 (delta 2), reused 0 (delta 0)
To [email protected]:ubermuda/test
* [new branch] bar -> bar
Voilou ! On a pushé un stash.
Merci beaucoup pour cette solution.