git stash et git pull

87

Je suis nouveau sur Git et j'utilise le plugin EGit eclipse pour commettre.

J'ai modifié quelques fichiers et j'ai caché les modifications, puis je l'ai fait git pullen ligne de commande qui a extrait toutes les dernières commits. Puis je l'ai fait à Apply stashed changespartir d'EGit. Maintenant, il a appliqué mes modifications et les modifications issues du dernier commit des fichiers cachés sont sorties. Je ne sais pas pourquoi il ne m'a pas posé de questions sur les conflits de fusion et a écrasé mes modifications et perdu les modifications de commits précédentes.

Comment obtenir ces changements?

Fric
la source
Cela ne semble pas plausible. Le stash apply apporte des modifications sans conflit ou provoque des conflits de fusion. Je pense que vous avez oublié de mentionner quelque chose. En outre, vous pouvez répéter vos étapes, très probablement votre réserve est toujours dans la liste, utilisez git stash listpour l'afficher.
kan le

Réponses:

207

Lorsque vous avez des modifications sur votre copie de travail, à partir de la ligne de commande, procédez comme suit:

git stash 

Cela cachera vos modifications et effacera votre rapport d'état

git pull

Cela extraira les modifications de la branche en amont. Assurez-vous qu'il indique une avance rapide dans le rapport. Si ce n'est pas le cas, vous effectuez probablement une fusion involontaire

git stash pop

Cela appliquera les modifications cachées à la copie de travail et supprimera les modifications de la réserve, sauf en cas de conflit. En cas de conflit, ils resteront en réserve afin que vous puissiez recommencer si nécessaire.

si vous avez besoin de voir ce qu'il y a dans votre réserve

git stash list
yilmazhuseyin
la source
@java_newbie, Si vous voulez faire cela avec stash et tirer no, il n'y a aucun moyen. Mais vous pouvez obtenir le même résultat avec le rebase. La commande 'git rebase origin / <nom de la branche amont>' devrait faire la même chose.
yilmazhuseyin le
5
Je pense que ça va le faire:git stash && git pull && git stash pop
Fabrice Kabongo
@yilmazhuseyin Qu'entendez-vous par «même résultat» Pouvez-vous donner une anecdote si vous le pouvez? Vouliez-vous dire git rebase origin/masterproduira le même résultat que git stash; git pull; git stash pop?
nehem
8
Si vous utilisez Git v2.9.0 ou une version ultérieure, essayez git pull --rebase --autostash. FYI
momocow
1
Fonctionne --autostashtoujours? Par exemple, si j'ai des fichiers non suivis qui sont déjà partiellement dans Git?
qräbnö