Git normally does this Wenn Sie Dateien auschecken, gehen Sie davon aus, dass die vorgenommenen Änderungen nicht für Dateien gelten, die beim Auschecken geändert werden. Zum Beispiel nehme ich die folgenden Dateien in einem Repository haben:
a.txt
b.txt
c.txt
Jetzt werde ich eine Änderung a.txt
machen in Datei:
a.txt (modified)
b.txt
c.txt
Jetzt nehme ich an zwei anderen Zweigen, a-changed
und b-changed
, in denen a.txt
und b.txt
wurden jeweils geändert.
Wenn ich versuche, b-changed
auszuchecken, wird Git dies ohne Beanstandung tun, weil meine Arbeitsverzeichnisänderungen nicht mit den Änderungen in diesem Zweig in Konflikt stehen. Wenn ich jedoch versuche, a-changed
auszuchecken, wird Git das nicht tun, weil ich Änderungen an meiner lokalen Kopie vorgenommen habe, und der Checkout würde sie überlisten. Git sagt:
$ git checkout a-changed
error: Your local changes to the following files would be overwritten by checkout:
a.txt
Please, commit your changes or stash them before you can switch branches.
Aborting
Git Sie nicht bieten eine Möglichkeit, um dieses Problem zu umgehen: stash your changes! Dadurch werden Ihre aktuellen Änderungen als Patch gespeichert und im Arbeitsverzeichnis rückgängig gemacht. Das heißt, nach der Ausführung von git stash
wird das Arbeitsverzeichnis bereinigt, und Ihre Änderungen werden auf den Stash-Stack übertragen. Sie können dann den gewünschten Zweig auschecken und git stash pop
ausführen, wodurch Ihre Änderungen vom Stapel entfernt und auf den neuen Arbeitsbaum angewendet werden. Hoffentlich werden sie sauber anwenden. Wenn dies nicht der Fall ist, erhalten Sie die standardmäßigen Merge-Konfliktmarker in a.txt
. Bemerkenswerterweise ist das Versteck nicht aus dem Stapel, so dass Sie eine git stash drop
tun müssen, nachdem Sie die Zusammenführung auflösen.
Sie können auch das Flag -m
(--merge
) an den Befehl checkout übergeben, der angibt, dass die Änderungen dreifach mit den eingehenden Änderungen zusammengeführt werden sollen. Generell bevorzuge ich Dinge zu verstauen.
Es ist nicht klar, was Sie fragen. Wenn Sie "meine Änderungen" sagen, beziehen Sie sich auf Commits zu einer vorherigen Verzweigung oder geänderten Dateien oder? –
@AndrewC Danke, ich habe meine Frage aktualisiert. –
Die Antwort von 3340 deckt in diesem Fall fast alles ab. –