Vergessen, in Git zu verzweigen, Änderungen müssen vom Master verschoben werden [duplicate]

Lesezeit: 2 Minuten

Ich duckte mich eifrig in den Code-Modus und modifizierte einige Dateien, versäumte es aber, zuerst vom Master zu verzweigen. Die Mods sind nicht so umfangreich, dass ich sie nicht wiederholen könnte, aber was ist ein guter Weg, meine (bisher nicht festgeschriebenen) Änderungen in Master zu übernehmen und sie in einen neuen Zweig zu migrieren, wobei Master am Ende unberührt bleibt?

  • Alter.. Diese Frage scheint nicht zum Thema zu gehören, da das Googeln des Titels hervorragende Antworten liefert.

    – jthill

    26. Oktober 2013 um 22:54 Uhr


  • @jthill Ich habe diese Frage über eine Google-Suche gefunden. Stecke ich in einer Endlosschleife?

    – phoog

    6. Februar 2019 um 15:06 Uhr

Benutzer-Avatar
Torek

Falls noch nirgendwo begangen (git status zeigt eine Menge geänderter Sachen, es ist in Ordnung, wenn es auch “git add”-ed ist):

$ git checkout -b newbranch

Trotz des Namens checkout diese Verwendung (mit -b) checkt nichts aus. Das -b Flag sagt “erstelle einen neuen Zweig”, also erstellt git den Namen des Zweigs und passt ihn dem aktuellen an HEAD verpflichten. Dann macht es HEAD zeigt auf den neuen Zweig und stoppt dort.

Ihr nächster Commit steht also an newbranch, dessen übergeordneter Commit der Commit ist, in dem Sie sich befanden, als Sie mit dem Ändern von Dateien begonnen haben. Also angenommen, du wärst dran masterund Sie hatten diese Commits:

A - B - C       <-- HEAD=master

das checkout -b macht das zu lesen:

A - B - C       <-- master, HEAD=newbranch

und ein späteres Commit fügt ein neues Commit hinzu D:

A - B - C       <-- master
          \
            D   <-- newbranch

Benutzer-Avatar
ensc

git branch -M master my-branch

Mit einer -m oder -M Möglichkeit, <oldbranch> wird umbenannt in <newbranch>. Wenn <oldbranch> ein entsprechendes Reflog hatte, wird es entsprechend umbenannt <newbranch>, und ein Reflog-Eintrag wird erstellt, um sich an die Zweigumbenennung zu erinnern. Wenn <newbranch> existiert, -M muss verwendet werden, um die Umbenennung zu erzwingen.

Quelle

und dann

git fetch origin refs/heads/master:refs/heads/master

oder

git branch master my-branch  (or another ref)

  • Das ist ein guter Weg, Dinge zu ändern, die waren engagiert sein auf dem neuen Zweig sein my-branch.

    – Torek

    26. Oktober 2013 um 22:24 Uhr

git stash
git stash branch <branchname>

  • Das wird funktionieren, aber git checkout -b <branchname> ist einfacher (und etwas schneller, Änderungen müssen nicht rückgängig gemacht und dann erneut angewendet werden).

    – Torek

    26. Oktober 2013 um 22:19 Uhr

1227070cookie-checkVergessen, in Git zu verzweigen, Änderungen müssen vom Master verschoben werden [duplicate]

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

Privacy policy