Nehmen Sie alle meine Änderungen am aktuellen Zweig und verschieben Sie sie in einen neuen Zweig in Git

Lesezeit: 2 Minuten

Ich begann mit der Arbeit an etwas, von dem ich dachte, dass es eine kleine Fehlerbehebung in meinem Master-Zweig sein würde. Es ist jedoch so weit außer Kontrolle geraten, dass ich wünschte, ich hätte einen separaten Zweig erstellt, um die Entwicklung überhaupt durchzuführen.

Also ich würde jetzt gerne folgendes machen:

  1. Erstellen Sie einen neuen Zweig mit dem Namen (sagen wir) “Kante”.
  2. Verschieben Sie alle geänderten / nicht verfolgten Dateien vom Master zum Edge (so dass der Master unverändert ist, seit ich mit der Fehlerbehebung begonnen habe).
  3. Beende meine Arbeit am Rand, verschmelze wieder mit dem Master

Wie kann ich das machen?

Wenn Sie noch nichts begangen haben, sind Sie bereits in der richtigen Position.

  1. Erstellen Sie einen neuen Zweig: git checkout -b edge
  2. Ihre Dateien haben sich nicht geändert. Gerade git add was muss und wie gewohnt begehen.
  3. Wenn Sie fertig sind, sich zu verpflichten edge, wechseln Sie zurück zu master mit git checkout und git merge edge.

Nehmen Sie alle meine Anderungen am aktuellen Zweig und verschieben
VonC

Um die Antwort von JB zu ergänzen, falls ja schon anfing, ein paar Commits auf dem Master zu machen, was sich als “Edge” -Anstrengung herausstellte, könnten Sie:

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

  • Der Stash-Wrapper ist nicht unbedingt erforderlich, sondern nur für nicht festgeschriebene Arbeitsänderungen, oder?

    – Rate mal

    22. Oktober 11 um 15:28 Uhr

  • @HaveAGuess Recht. Durch “alle meine Änderungen übernehmen” habe ich auch aktuelle noch nicht hinzugefügte Änderungen übernommen. Daher der Vorrat.

    – VonC

    22. Oktober 11 um 16:11 Uhr

  • Könnten die zweite und dritte Zeile nicht in “git checkout -b edge master” reduziert werden?

    – Paul Lynchen

    19. März 13 um 22:54 Uhr

  • @PaulLynch unter Berücksichtigung dieser Commits (on master) das sollte an sein edge sind an master, ja. Ich habe die Antwort bearbeitet.

    – VonC

    20. März 13 um 6:15 Uhr


  • Ich sehe nicht wie git stash ist hier nützlich, da mit git checkout -b ändert den Arbeitsbaum überhaupt nicht …

    – Benutzer1686

    10. Mai 13 um 13:44 Uhr

Wenn Sie versuchen, die Arbeit von master in einen Branch zu verschieben, der bereits existiert, aber hinter master liegt, lässt git Sie nicht zu dem anderen Branch wechseln. Gehen Sie in diesem Fall wie folgt vor:

git stash
git checkout oldBranch
git merge master
git checkout master
git stash apply
git checkout oldBranch

.

492830cookie-checkNehmen Sie alle meine Änderungen am aktuellen Zweig und verschieben Sie sie in einen neuen Zweig in Git

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy