J'ai travaillé sur un projet, mais malheureusement, j'ai oublié de passer à ma branche, et en tant que tel, j'ai travaillé sur master
Comment puis-je copier le travail (3 fichiers) que j'ai fait ici de master, dans ma branche (appelée, par exemple branch123 ) sans commettre sur master?
stash
enregistre les modifications locales, puisstash apply
les ramène.git reset --hard HEAD
et vous revenez au dernier commit que vous avez fait à votre branche principale.La réponse acceptée est la plus complète, mais il existe un cas particulier où vous pouvez simplifier. Si les fichiers que vous avez modifiés dans le répertoire de travail sont identiques dans les deux
master
etbranch123
vous pouvez simplement fairePas besoin de cacher quoi que ce soit, car le comportement par défaut de
checkout
NE PAS écraser les fichiers modifiés dans votre répertoire de travail, vous ne perdrez donc rien. (Cela a en fait été mentionné dans les commentaires d'abord par Cascabel)Comme d'autres personnes l'ont mentionné dans les commentaires, s'il
branch123
n'existe pas encore, vous pouvez le faireBasé sur ce que j'ai trouvé ici .
la source
git checkout -b newbranch
master
etbranch123
. Voir ma réponse modifiée.git stash
est ce dont vous avez besoin.une explication complète peut être trouvée dans Git-Tools-Stashing
la source
Comme il est possible de créer une nouvelle branche mais pas possible d'extraire une branche existante tout en ayant extrait les fichiers, j'ai trouvé l'astuce suivante en utilisant une branche temporaire pour fonctionner:
Ce scénario fonctionne au moins avec le plugin VS 2015 Git mais fonctionnerait très probablement avec n'importe quel outil git.
EDIT: J'ai découvert que vous devrez effectuer un rebase (git rebase --onto) de la branche temporaire avant d'effectuer la fusion. Sinon, les changements dans master seront inclus dans la fusion. Une étape supplémentaire 3.5 ci-dessus. En savoir plus sur le rebase ici: https://git-scm.com/book/en/v2/Git-Branching-Rebasing
la source