Frage Git create Zweig vom aktuellen ausgecheckten Master?


Es gibt einen git-gesteuerten Ordner auf einem Server, auf dem der Hauptzweig ausgecheckt ist und ein ganzer Stapel von Dateien geändert und nicht festgeschrieben wurde. Gibt es eine Möglichkeit für mich, die Änderungen in eine separate Niederlassung zu übertragen, damit ich zu einer sauberen Version zurückkehren kann?

dh ich möchte alle diese Personenänderungen effektiv rückgängig machen, aber sie in einer anderen Chance speichern, also wenn diese Person ihre Änderungen wünscht, können sie zu diesem Zweig wechseln.

(Ja, ich weiß, dass git nicht so funktioniert, aber das ist meine Situation!) Irgendwelche Ideen sehr geschätzt.


75
2017-09-21 06:41


Ursprung


Antworten:


Der erste Wechsel in einen anderen Zweig, der auf dem aktuellen HEAD basiert, wird folgendermaßen durchgeführt:

git checkout -b newbranch

Übernehmen Sie alle Änderungen (ansonsten werden keine neu hinzugefügten Dateien angenommen) git add Sie):

git commit -a

Geh zurück zum Meisterzweig:

git checkout master

Die zuvor nicht festgeschriebenen Änderungen befinden sich alle im Zweig newbranch, und der Master ist immer noch in dem Zustand, in dem er ohne diese Änderungen war.


132
2017-09-21 06:52



Diese Methode ist nützlich:

git checkout -B <new_branch> <start point>

Woher:

  • <new_branch> ist Ihre neue Niederlassung (z.B. my_branch)
  • <start point> ist dein Startzweig (master in Ihrem Fall)
  • -B Erstellt ab dem neuen Zweig <start point>, wenn es bereits existiert, dann setze es auf (es wird nicht fehlschlagen als -b wenn Filiale bereits existiert)
  • manchmal -m Es kann nützlich sein, beim Wechseln von Verzweigungen anzugeben, dass dies eine dreifache Zusammenführung zwischen dem aktuellen Zweig und Ihren Arbeitsbaum-Inhalten bewirkt (nützlich für Skripting).

Sehen: man git-checkout für mehr Details.


14
2018-01-17 14:05



Sie können Ihre Änderungen jederzeit speichern.

git stash
git checkout -b bravenewmaster
git stash apply

Bedenken Sie auch, dass Sie, wenn Sie sich auf den "falschen" Zweig festlegen, diesen Zweig immer zurück verschieben können, weil der Zweig nichts anderes als ein Zeiger auf ein Commit ist.


13
2017-09-21 06:45