Créer la branche Git avec les changements actuels
j'ai commencé à travailler sur ma branche principale en pensant que ma tâche serait facile. Après un moment, j'ai réalisé que cela prendrait plus de travail et je veux faire tout ce travail dans une nouvelle branche. Comment puis-je créer une nouvelle branche et prendre tous ces changements avec moi sans salir maître?
5 réponses
si vous n'aviez pas encore fait de commit, seulement (1: branch) et (3: checkout) seraient suffisants.
Ou, en une seule commande: git checkout -b newBranch
Comme mentionné dans le git reset
l'homme page :
$ git branch topic/wip # (1)
$ git reset --hard HEAD~3 # (2) NOTE: use $git reset --soft HEAD~3 (explanation below)
$ git checkout topic/wip # (3)
- vous avez fait quelques commits, mais réalisez qu'ils étaient prématurés d'être dans la branche "
master
". Vous voulez continuer à polir dans un sujet branche, donc créer "topic/wip
" branche de l'actuelHEAD
. - rembobinez la branche
master
pour vous débarrasser de ces trois commits. - passez à
topic/wip
" branche et continuez à travailler.
Note: en raison de l'effet "destructif" d'une commande git reset --hard
(il ne réinitialise l'arbre d'index et de travail. Tout changement aux fichiers suivis dans l'arbre de travail depuis <commit>
$ git reset --soft HEAD~3 # (2)
cela m'assurerait de ne perdre aucun fichier privé (Non ajouté à l'index).
L'option --soft
ne touchera ni le fichier index ni l'arbre de travail (mais réinitialisera la tête à <commit>
, comme tous les modes le font).
comme indiqué dans cette question: Git: créer une branche à partir des changements non-inscrits/non engagés sur le master : stash n'est pas nécessaire.
il suffit d'utiliser:
git checkout -b topic/newbranch
tout travail non engagé sera transféré à la nouvelle branche.
Si vous essayez de pousser, vous obtiendrez le message suivant
fatal: L'actuelle direction de la fonctionnalité/NEWBRANCH n'a pas en amont de la branche. De poussez la branche courante et réglez la télécommande en amont, utilisez
git push --set-upstream origin feature/feature/NEWBRANCH
faites comme suggéré pour créer la branche à distance:
git push --set-upstream origin feature/feature/NEWBRANCH
suivez ces étapes:
-
créer une nouvelle branche:
git branch newfeature
-
Caisse nouvelle branche: (ce ne sera pas réinitialiser votre travail.)
git checkout newfeature
-
engagez maintenant votre travail sur cette nouvelle branche:
git commit -s
en utilisant les étapes ci-dessus gardera votre branche d'origine propre et vous n'avez pas à faire de ' git reset --dur".
puisque vous n'avez pas encore fait de commits, vous pouvez enregistrer toutes vos modifications à la cachette, créer et passer à une nouvelle branche, puis pop ces changements de nouveau dans votre arbre de travail:
git stash # save local modifications to new stash
git checkout -b topic/newbranch
git stash pop # apply stash and remove it from the stash list
Pour ajouter de nouveaux changements à une nouvelle branche et pousser à distance:
git branch branch/name
git checkout branch/name
git push origin branch/name
souvent j'oublie d'ajouter la partie d'origine pour pousser et être confus pourquoi je ne vois pas la nouvelle branche/commit dans bitbucket