Dies ist die einzige Antwort, die Ihnen sagt, dass Sie die git stash -k
die Sie benötigen...
wenn Sie sich bereits eine Stunde lang mit git add -p
und dann beschlossen, dass Sie Test was Sie in den Index aufgenommen haben vor die eigentliche Übergabe. In diesem Fall tun Sie no einfach verwenden git stash
!
Tun Sie es stattdessen:
git stash -k
Dadurch bleibt der Index erhalten und der Rest, der sich noch im Arbeitsverzeichnis befindet und noch nicht in den Index aufgenommen wurde, wird entfernt. Das ist genau das, was Sie wollen.
Jetzt können Sie versuchen, zu kompilieren/testen und zu übertragen. D.h.
make
git commit -m 'Yay!'
Dann holen Sie sich die nicht übertragenen Änderungen zurück mit
git stash pop
Wenn Sie jedoch feststellen, dass es sich NICHT kompilieren lässt, dann sollten Sie Änderungen vornehmen und diese auch dem Index hinzufügen, was zu Verwirrung führen könnte git stash pop
. Es ist nicht so gut, wenn es um das Zusammenführen geht. In diesem Fall sollten Sie wahrscheinlich sowieso nur committen; also:
make
git commit -m 'Grrrr'
Erstellen Sie dann einen neuen Zweig,
git switch -c tmpbranch
Ihre Arbeit dort erledigen (Code ändern, Tests durchführen und weitere Übertragungen vornehmen)
/* blood sweat and tears */
Sobald alles funktioniert, übertragen Sie es auf den neuen Zweig
commit -a -m 'Finally!'
zurück zum alten Zweig gehen und dann die git stash pop
mit demselben Arbeitsverzeichnis, in dem Sie sich befanden, als Sie in den Stash verschoben haben.
git checkout youknowwhatbranchyouwereonright
git stash pop
Übertragen Sie auch das, sonst können Sie den tmpbranch nicht zusammenführen. Führen Sie dann den temporären Zweig zusammen, den Sie erstellt haben.
git commit -a -m 'Still working on this.'
git merge tmpbranch
/* fix collisions and commit */
Jetzt können Sie den Satz "Wir arbeiten noch daran" an den Anfang setzen und den Rest in einem einzigen Kommentar zusammenfassen. Zum Beispiel
git rebase -i
geben könnte:
pick 540623a Grrr
pick a8589d3 Still working on this.
pick d3b602c Finally
Dann ändern Sie das in:
reword 540623a Grrr
fixup d3b602c Finally
pick a8589d3 Still working on this.
Und schließlich die letzte Übergabe rückgängig machen (die Übergabe "Wir arbeiten noch daran")
git reset HEAD~1