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?

605
demandé sur Marcus Leon 2010-10-10 12:44:12

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)
  1. 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'actuel HEAD .
  2. rembobinez la branche master pour vous débarrasser de ces trois commits.
  3. 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).

504
répondu VonC 2018-03-27 13:01:41

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

189
répondu EeKay 2018-01-11 22:50:42

suivez ces étapes:

  1. créer une nouvelle branche:

    git branch newfeature
    
  2. Caisse nouvelle branche: (ce ne sera pas réinitialiser votre travail.)

    git checkout newfeature
    
  3. 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".

54
répondu AvadhP 2011-08-25 15:12:51

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
17
répondu Ether 2015-10-10 14:15:14

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

4
répondu Patrick Schaefer 2017-04-24 17:39:48