Ich bin gerade dabei, Konflikte für eine Git-Zusammenführung zu lösen, aber ich möchte vorübergehend zu einem sauberen Zustand zurückkehren, ohne die Arbeit zu verlieren, die ich bereits an der Zusammenführung geleistet habe. Wenn ich versuche, git stash, bekomme ich Fehlermeldungen für jede Datei, für die ein Konflikt noch nicht gelöst wurde: “needs merge”.
Gibt es eine gute Möglichkeit, die laufende Zusammenführung zu speichern? Die einzige Idee, die ich habe, ist, das Repo in einen anderen Ordner zu klonen, aber das scheint übertrieben zu sein.
Du könntest die verwenden git worktree
Befehl, um einen neuen Arbeitsbaum in einem anderen Ordner hinzuzufügen. Dies ist wie ein zweiter Index und Arbeitsbaum, verwendet jedoch dasselbe Git-Repo. man git-worktree
:
Manage multiple working trees attached to the same repository.
A git repository can support multiple working trees, allowing you to check out
more than one branch at a time. With git worktree add a new working tree is
associated with the repository. This new working tree is called a "linked working
tree" as opposed to the "main working tree" prepared by "git init" or "git clone".
A repository has one main working tree (if it’s not a bare repository) and zero or
more linked working trees.
Wenn Sie das Repository lokal klonen, wird zumindest auf Unix-Systemen keine separate Kopie des Repo-Verlaufs auf der Festplatte gespeichert. Wenn Sie also 10 GB Verlauf, aber 100 MB Dateien haben, verwenden Sie nur die zusätzlichen 100 MB.
– Dietrich Ep
8. Januar 2016 um 20:49 Uhr
Die laufende Zusammenführung wird im Index und im Arbeitsbaum gespeichert. Angesichts dessen
git stash
aus diesen beiden zwei Commits macht, würde man denken, dass es genau das Richtige wäre – außer dass der laufende Merge-Status nicht in einem Commit gespeichert werden kann: Er enthält Metadaten, die Git nicht in einen Baum schreiben wird. Derstash
Das Skript könnte geändert werden, um den Inhalt der rohen Indexdatei in einem eigenen Blob zu speichern, aber das würde ziemlich schwierig werden. Ich würde nicht versuchen wollen, es heute Abend zu codieren. 🙂 Das erneute Klonen des Repos scheint die beste schnelle Methode zu sein.– Torek
9. Januar 2016 um 6:24 Uhr
Klon gemacht dafür.
– jthill
9. Januar 2016 um 6:59 Uhr