450 Stimmen

Git - Arbeiten am falschen Zweig - wie kopiere ich Änderungen in den bestehenden Themenzweig

Ich habe an einem Projekt gearbeitet, aber leider habe ich vergessen zu meinem Zweig zu wechseln, und so habe ich auf dem Master gearbeitet

Wie kann ich die Arbeit (3 Dateien), die ich hier gemacht habe, vom Master in meinen Zweig kopieren (der z.B. Zweigstelle123 ), ohne sich zum Meister zu machen?

757voto

gnab Punkte 8723

Das klingt, als bräuchten Sie nur das Folgende:

git stash
git checkout branch123
git stash apply

Dann sollten Sie wieder auf Ihrem eigenen Zweig sein, ohne den Masterzweig zu berühren.

73voto

Russel Dirks Punkte 837

Die akzeptierte Antwort ist die gründlichste, aber es gibt einen Sonderfall, in dem man vereinfachen kann. Wenn die Dateien, die Sie im Arbeitsverzeichnis geändert haben, in beiden Verzeichnissen identisch sind master y branch123 können Sie einfach tun

git checkout branch123

Es ist nicht nötig, etwas zu verstecken, da das Standardverhalten von checkout ist es, geänderte Dateien in Ihrem Arbeitsverzeichnis NICHT zu überschreiben, damit Sie nichts verlieren. (Dies wurde in den Kommentaren zuerst von Cascabel erwähnt)

Wie bereits von anderen in den Kommentaren erwähnt wurde, sollten branch123 noch nicht existiert, können Sie

git checkout -b branch123

Ausgehend von dem, was ich gefunden habe aquí .

6voto

Roee Gavirel Punkte 18058

git stash ist das, was Sie brauchen.

Eine ausführliche Erklärung finden Sie in Git-Tools-Stashing

0voto

Pasi Punkte 11

Da es zwar möglich ist, einen neuen Zweig zu erstellen, aber nicht möglich ist, einen bestehenden Zweig auszuchecken, während Dateien ausgecheckt werden, habe ich den folgenden Trick gefunden, der mit einem temporären Zweig funktioniert:

Dieses Szenario funktioniert zumindest mit dem VS 2015 Git-Plugin, würde aber höchstwahrscheinlich mit jedem Git-Tool funktionieren.

  1. Auschecken und Änderungen an Dateien in master vornehmen (ups!, falscher Zweig)
  2. einen neuen Zweig "temp" (oder einen anderen unbenutzten Namen Ihrer Wahl) von master erstellen. Ausgecheckte Dateien werden nun in temp und nicht in master ausgecheckt.
  3. Einchecken der Änderungen in temp (Master bleibt unberührt)
  4. Alles ist nun eingecheckt und es ist möglich, einen bestehenden Zweig auszuchecken. Checken Sie die gewünschte Verzweigung aus (die Verzweigung, in der ich die Änderungen zu Beginn vornehmen wollte) 3.5 Git Rebase
  5. temp zum gewünschten Zweig zusammenführen. Jetzt befinden sich die Änderungen im richtigen Zweig.
  6. den temporären Zweig löschen, da er nicht mehr benötigt wird

EDIT: Ich habe herausgefunden, dass man vor der Zusammenführung einen rebase (git rebase --onto) des temporären Zweigs durchführen muss. Andernfalls werden die Änderungen in master in die Zusammenführung einbezogen. Ein zusätzlicher Schritt 3.5 oben. Weitere Informationen zu rebase finden Sie hier: https://git-scm.com/book/en/v2/Git-Branching-Rebasing

0voto

Prid Punkte 585

Github Schreibtisch

Wenn Sie in Github Desktop einen neuen Zweig erstellen oder zu einem anderen Zweig mit nicht übertragenen Änderungen wechseln, werden Sie gefragt, ob Sie Folgendes tun möchten verlassen die Änderungen oder umziehen sie in die neue Niederlassung:

enter image description here

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X