web-dev-qa-db-fra.com

Prendre toutes mes modifications sur la branche actuelle et les déplacer vers une nouvelle branche dans Git

J'ai commencé à travailler sur ce que je pensais être un correctif mineur sur ma branche principale. Cependant, il a échappé à tout contrôle au point où j'aurais souhaité avoir créé une branche distincte pour faire le développement en premier lieu.

Alors maintenant, ce que j'aimerais faire, c'est:

  1. Créez une nouvelle branche appelée (par exemple) "Edge"
  2. Déplacer tous les fichiers modifiés/non suivis du maître vers Edge (de telle sorte que le maître reste inchangé depuis le début de la correction du bogue)
  3. Terminer mon travail sur Edge, fusionner de nouveau en maître

Comment puis-je faire ceci?

102
Tom Lehman

Si vous n'avez encore rien commis, vous êtes déjà dans la bonne position.

  1. Créez une nouvelle branche: git checkout -b Edge
  2. Vos fichiers n'ont pas changé. Juste git add ce qui doit et s'engager comme d'habitude.
  3. Lorsque vous avez terminé de vous engager sur Edge, revenez à master avec git checkout et git merge Edge.
97
JB.

Pour ajouter à la réponse de JB, si vous avez déjà commencé à faire quelques commits sur master pour ce qui a fini par être un effort "Edge", vous pourriez:

git stash
git checkout -b Edge master
git branch -f master SHA1_before_your_commits
git stash apply
88
VonC

Si vous essayez de déplacer le travail du maître vers une branche qui existe déjà, mais qui est derrière le maître, git ne vous laissera pas passer à l'autre branche. Dans ce cas, procédez comme suit:

git stash
git checkout oldBranch
git merge master
git checkout master
git stash apply
git checkout oldBranch
13
Jesse P