2009-09-09 22 views
98

Ho iniziato a lavorare su quella che pensavo sarebbe stata una piccola correzione di bug sul mio ramo principale. Tuttavia, ha perso il controllo a dismisura fino al punto in cui avrei voluto creare una filiale separata per lo sviluppo in primo luogo.Prendere tutte le mie modifiche sul ramo attuale e spostarle in un nuovo ramo in Git

Così adesso quello che vorrei fare è:

  1. Creare un nuovo ramo chiamato (diciamo) "bordo"
  2. spostare tutti i file modificati/non monitorate sul padrone a bordo (in modo tale che master è invariato rispetto a quando ho iniziato la correzione di bug)
  3. finire il mio lavoro sul bordo, si fondono nuovamente dentro maestro

Come posso fare questo?

risposta

93

Se non hai ancora commesso qualcosa, sei già nella giusta posizione.

  1. Creare una nuova filiale: git checkout -b edge
  2. I file non sono cambiate. Solo git add ciò che deve e deve essere eseguito come al solito.
  3. Al termine dell'impegno su edge, tornare a master con git checkout e git merge edge.
+0

non aveva ancora commesso nulla, così che la prima linea è stata uno spettacolo di benvenuto ... uff, che era in realtà abbastanza indolore :-) – Ryan

86

Per aggiungere alla risposta di JB, se avete già iniziato a fare un paio di commit sul master per quello che ha finito per come uno sforzo di "edge", si potrebbe:

git stash 
git checkout -b edge master 
git branch -f master SHA1_before_your_commits 
git stash apply 
+0

l'involucro scorta non è strettamente necessario, ma solo per modifiche di lavoro senza impegno, giusto? – HaveAGuess

+4

@HaveAGuess giusto. Con "prendi tutti i miei cambiamenti", ho incluso anche le modifiche non ancora aggiunte. Da qui la scorta. – VonC

+1

ringraziamenti (votati) – HaveAGuess

13

Se stanno provando a spostare il lavoro dal master a un ramo che esiste già, ma è dietro il master, git non ti permetterà di passare all'altro ramo. In questo caso, fare questo:

git stash 
git checkout oldBranch 
git merge master 
git checkout master 
git stash apply 
git checkout oldBranch 
Problemi correlati