Question Créer une 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 le maître?


585
2017-10-10 08:44


origine


Réponses:


Si vous n'aviez encore rien fait, seulement (1: branche) et (3: checkout) suffiraient.
Ou, en une commande: git checkout -b newBranch

Comme mentionné dans le git reset page de manuel:

$ 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 engagements, mais se rendre compte qu'ils étaient prématurés d'être dans le "master"branche Vous voulez continuer à les polir dans une branche de sujet, alors créez"topic/wip"Branche du courant HEAD.
  2. Rembobiner le master branche pour se débarrasser de ces trois commits.
  3. Basculer vers "topic/wip"branchez et continuez à travailler.

Note: en raison de l'effet "destructeur" d'un git reset --hard commande (elle réinitialise l'index et l'arbre de travail.) Toute modification des fichiers suivis dans l'arbre de travail depuis <commit> sont mis au rebut), je préfère aller avec:

$ git reset --soft HEAD~3  # (2)

Cela permettrait de s'assurer que je ne perds aucun fichier privé (pas ajouté à l'index).
le --soft l'option ne touchera pas du tout le fichier index ni l'arbre de travail (mais réinitialise la <commit>, comme tous les modes font).


490
2017-10-10 08:52



Comme indiqué dans cette question: Git: Créer une branche à partir de modifications non marquées / non validées sur le maître: stash n'est pas nécessaire.

Utilisez juste:

git checkout -b topic/newbranch 

Tout travail non engagé sera acheminé à la nouvelle succursale.

Si vous essayez de pousser, vous obtiendrez le message suivant

fatale: La fonction de branche actuelle / NEWBRANCH n'a pas de branche amont. À   appuyez sur la branche actuelle 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


181
2017-08-19 06:05



Suivez ces étapes:

  1. Créer une nouvelle branche:

    git branch newfeature
    
  2. Commander une nouvelle succursale: (ceci ne réinitialisera pas votre travail.)

    git checkout newfeature
    
  3. Maintenant, engagez 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 'git reset --hard'.


53
2017-08-25 15:12



Puisque vous n'avez encore effectué aucun commit, vous pouvez enregistrer toutes vos modifications dans la cachette, créer et basculer vers une nouvelle branche, puis replacer ces modifications dans votre arborescence 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

16
2017-10-10 15:27



Pour ajouter de nouvelles modifications à une nouvelle branche et pousser vers la télécommande:

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
2018-04-24 17:39