J'ai travaillé sur une branche locale et j'ai également transmis les modifications à distance. Je veux annuler les modifications apportées à cette branche et y faire autre chose, mais je ne veux pas perdre le travail complètement. Je pensais à quelque chose comme créer une nouvelle branche localement et copier l'ancienne branche, puis je peux annuler les modifications et continuer à travailler sur l'ancienne branche. Y a-t-il une meilleure façon peut-être? Ou comment je fais ça?
git checkout old_branch
git branch new_branch
Cela vous donnera une nouvelle branche "new_branch" avec le même état que "old_branch".
Cette commande peut être combinée à ce qui suit:
git checkout -b new_branch old_branch
git branch copyOfMyBranch MyBranch
Cela évite l'acte potentiellement long et inutile de vérifier une branche. Rappelez-vous qu'une extraction modifie "l'arbre de travail", ce qui peut prendre un certain temps s'il est volumineux ou s'il contient des fichiers volumineux (images ou vidéos, par exemple).
Avec Git 2.15 (T4 2017), "git branch
" a appris "-c/-C
" pour créer une nouvelle branche en copiant une branche existante.
Voir commit c8b2cec (18 juin 2017) par var Arnfjörð Bjarmason (avar
) .
Voir commit 52d59cc , commit 5463caa (18 juin 2017) par Sahil Dua (sahildua2305
) .
(Fusionnée par Junio C Hamano - gitster
- dans commit 3b48045 , 3 octobre 2017)
branch
: ajoute une option--copy
(-c
) pour aller avec--move
(-m
)Ajoutez la capacité à
--copy
une branche, ainsi qu’à son reflog et à sa configuration, le même mécanisme sous-jacent que l’option--move
(-m
) à l’exception du refog et de la configuration qui est copié au lieu d’être déplacé.Ceci est utile pour par exemple copier une branche de sujet dans une nouvelle version, par exemple.
work
àwork-2
après avoir soumis la rubriquework
à la liste, tout en conservant toutes les informations de suivi et toute autre configuration associée à la branche, et contrairement à--move
en conservant déjà l'autre -soumis branche autour pour référence.
Remarque: lorsque vous copiez une branche, vous restez sur votre branche actuelle.
Comme l'explique Junio C Hamano:
Lorsque vous créez une nouvelle branche
B
en copiant la brancheA
qui est la branche actuelle, elle met également à jourHEAD
pour qu'elle pointe vers la nouvelle branche.
Cela a probablement été fait ainsi parce que "git branch -c A B
" a greffé son implémentation sur "git branch -m A B
",Cela ne correspond pas aux attentes habituelles.
Si j'étais assis sur une chaise bleue et que quelqu'un venait la repeindre en rouge, j'accepterais de finir assis sur une chaise qui est maintenant rouge (je peux aussi me lever, au lieu de cela, car est ma chaise bleue préférée).Mais si quelqu'un crée une nouvelle chaise rouge, inspirée de la chaise bleue sur laquelle je suis assis, je ne m'attends pas à être éjecté de la chaise bleue et à finir assis sur la nouvelle chaise rouge.