Ich nahm einige Änderungen an meiner Niederlassung vor und stellte fest, dass ich vergessen hatte, einige andere notwendige Änderungen an dieser Niederlassung vorgenommen zu haben. Was ich möchte, ist eine Möglichkeit, meine versteckten Änderungen mit den aktuellen Änderungen zusammenzuführen.
Gibt es eine Möglichkeit, dies zu tun?
Es ist eher der Einfachheit halber, dass ich schließlich aufgab und zuerst meine aktuellen Änderungen, dann meine versteckten Änderungen festlegte, aber ich hätte es vorgezogen, sie mit einem Schlag einzubringen.
Antworten:
Ich habe gerade festgestellt, dass, wenn Ihre nicht festgeschriebenen Änderungen zum Index hinzugefügt werden (dh "inszeniert", mit
git add ...
),git stash apply
(und vermutlichgit stash pop
) tatsächlich eine ordnungsgemäße Zusammenführung durchgeführt wird. Wenn es keine Konflikte gibt, bist du golden. Wenn nicht, lösen Sie sie wie gewohnt mitgit mergetool
oder manuell mit einem Editor.Um klar zu sein, ist dies der Prozess, über den ich spreche:
... was wahrscheinlich das ist, wonach Sie suchen.
tl; dr
git add
Zuerst ausführen .quelle
git stash apply --force
oder so.git add .
,git stash apply
und danngit reset
das Versteck meine Arbeit Änderungen zu übernehmen und merge ohne verpflichtet zu müssen.Laufen
git stash pop
odergit stash apply
ist im Wesentlichen eine Zusammenführung. Sie hätten Ihre aktuellen Änderungen nicht festschreiben müssen, es sei denn, die im Stash geänderten Dateien werden auch in der Arbeitskopie geändert. In diesem Fall hätten Sie diese Fehlermeldung gesehen:In diesem Fall können Sie den Stash nicht in einem Schritt auf Ihre aktuellen Änderungen anwenden. Sie können die Änderungen festschreiben, den Stash anwenden, erneut festschreiben und diese beiden Festschreibungen mit quetschen,
git rebase
wenn Sie wirklich keine zwei Festschreibungen wünschen, aber das kann mehr Ärger sein, als es wert ist.quelle
git commit --amend
.Hier ist eine weitere Option:
git stash show -p
zeigt den Patch des zuletzt gespeicherten Stashs an.git apply
wird es anwenden. Nachdem die Zusammenführung abgeschlossen ist, kann der zusammengeführte Stash mit gelöscht werdengit stash drop
.quelle
git stash pop
dies nicht nur in Fällen geschieht, in denen die Zusammenführung sauber gilt ...git stash show -p --no-color | git apply --3way
(--3way
= bei fehlerhaftem Patch auf 3-Wege-Zusammenführung zurückgreifen).git stash show -p
schafft ein Diff zwischen dem gebunkert Inhalt und das Commit zurück , wenn der Vorrat Eintrag zum ersten Mal erstellt wurde . Dies würde also die vom OP vorgenommenen Änderungen an der Arbeitsdatei überschreiben.git stash show -p
wird von zusammengeführtgit apply
, wenn es möglich ist, auf Konflikte zu verzichten.Die Art und Weise, wie ich das mache, ist dann
git add
zuerstgit stash apply <stash code>
. Es ist der einfachste Weg.quelle
Wie von @Brandan vorgeschlagen, musste ich Folgendes tun, um herumzukommen
Folgen Sie diesem Prozess:
Und Sie haben die Möglichkeit, die lokalen Änderungen vollständig zusammenzuführen
file
, um weitere Arbeiten / Aufräumarbeiten durchzuführen oder ein einziges gutes Commit durchzuführen. Wenn Sie wissen, dass der zusammengeführte Inhaltfile
korrekt ist, können Sie eine passende Nachricht schreiben und überspringengit reset HEAD^
.quelle
Vielleicht ist es nicht die schlechteste Idee, (über Difftool) aus ... ja ... einem Zweig zusammenzuführen!
quelle
Sie können leicht
quelle
Eine andere Möglichkeit besteht darin, einen weiteren "Git-Stash" der lokalen nicht festgeschriebenen Änderungen vorzunehmen und dann die beiden Git-Stashes zu kombinieren. Leider scheint Git keine Möglichkeit zu haben, zwei Verstecke einfach zu kombinieren. Eine Möglichkeit besteht also darin, zwei .diff-Dateien zu erstellen und beide anzuwenden - zumindest ist dies kein zusätzliches Commit und erfordert keinen zehnstufigen Prozess: |
Gewusst wie: https://stackoverflow.com/a/9658688/32453
quelle