Ich habe an einem Projekt gearbeitet, aber leider habe ich vergessen , zu meiner Niederlassung zu wechseln, und als solches habe ich am Master gearbeitet
Wie kann ich die Arbeit (3 Dateien), die ich hier erledigt habe, vom Master in meinen Zweig (z. B. branch123 ) kopieren, ohne mich zum Master zu verpflichten?
stash
speichert lokale Änderungen undstash apply
bringt sie dann zurück.git reset --hard HEAD
und Sie sind zurück zu dem letzten Commit, das Sie in Ihrem Hauptzweig vorgenommen haben.Die akzeptierte Antwort ist die gründlichste, aber es gibt einen Sonderfall, in dem Sie vereinfachen können. Wenn die Dateien, die Sie im Arbeitsverzeichnis geändert haben, in beiden identisch sind
master
undbranch123
Sie dies einfach tun könnenSie müssen nichts verstauen, da das Standardverhalten von darin
checkout
besteht, geänderte Dateien in Ihrem Arbeitsverzeichnis NICHT zu überschreiben, damit Sie nichts verlieren. (Dies wurde tatsächlich in den Kommentaren zuerst von Cascabel erwähnt)Wie andere Leute in den Kommentaren erwähnt haben
branch123
, können Sie dies tun , wenn es noch nicht existiertBasierend auf dem, was ich hier gefunden habe .
quelle
git checkout -b newbranch
master
und nicht identisch sindbranch123
. Siehe meine bearbeitete Antwort.git stash
ist was du brauchst.Eine vollständige Erklärung finden Sie in Git-Tools-Stashing
quelle
Da es möglich ist, einen neuen Zweig zu erstellen, einen vorhandenen Zweig jedoch nicht auschecken kann, während Dateien ausgecheckt werden, habe ich den folgenden Trick mit einem temporären Zweig gefunden:
Dieses Szenario funktioniert zumindest mit dem Git-Plugin VS 2015, würde aber höchstwahrscheinlich mit jedem Git-Tool funktionieren.
BEARBEITEN: Ich habe herausgefunden, dass Sie vor dem Zusammenführen eine Rebase (git rebase --onto) des temporären Zweigs durchführen müssen. Andernfalls werden die Änderungen im Master in die Zusammenführung einbezogen. Ein zusätzlicher Schritt 3.5 oben. Weitere Informationen zur Rebase finden Sie hier: https://git-scm.com/book/en/v2/Git-Branching-Rebasing
quelle