Ich habe eine git stash pop
und endete mit Zusammenführungskonflikten. Ich habe die Dateien aus dem Dateisystem entfernt und wie git checkout
unten gezeigt ausgeführt, aber es wird angenommen, dass die Dateien noch nicht zusammengeführt sind. Ich habe dann versucht, die Dateien zu ersetzen und git checkout
wieder ein und dasselbe Ergebnis zu erzielen. Ich habe versucht, es mit -f
Flagge zu erzwingen . Jede Hilfe wäre dankbar!
chirag-patels-macbook-pro:haloror patelc75$ git status
app/views/layouts/_choose_patient.html.erb: needs merge
app/views/layouts/_links.html.erb: needs merge
# On branch prod-temp
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: db/schema.rb
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# unmerged: app/views/layouts/_choose_patient.html.erb
# unmerged: app/views/layouts/_links.html.erb
chirag-patels-macbook-pro:haloror patelc75$ git checkout app/views/layouts/_choose_patient.html.erb
error: path 'app/views/layouts/_choose_patient.html.erb' is unmerged
chirag-patels-macbook-pro:haloror patelc75$ git checkout -f app/views/layouts/_choose_patient.html.erb
warning: path 'app/views/layouts/_choose_patient.html.erb' is unmerged
git
git-stash
git-checkout
Chirag Patel
quelle
quelle
git stash apply/pop
sollte mit Git 2.5 (Q2 2015) einfacher sein, da der Arbeitsbaum jetzt sauber sein muss: siehe meine Antwort untenAntworten:
Siehe man git merge ( SO LÖSEN SIE KONFLIKTE ):
Und unter TRUE MERGE (um zu sehen, worauf sich 2. und 3. beziehen):
Also: Verwenden
git reset --hard
Sie diese Option,git reset
wenn Sie die Stash-Änderungen aus Ihrem Arbeitsbaum entfernen möchten oder wenn Sie nur den Index bereinigen und die Konflikte in Ihrem Arbeitsbaum manuell zusammenführen möchten.Unter man git stash ( OPTIONEN, Pop ) können Sie zusätzlich lesen:
quelle
Mir war etwas Ähnliches passiert. Ich wollte die Dateien noch nicht inszenieren, also fügte ich sie hinzu
git add
und tat es dann einfachgit reset
. Dies hat im Grunde nur meine Änderungen hinzugefügt und dann aufgehoben, aber die nicht zusammengeführten Pfade gelöscht.quelle
reset --hard
da Ihre Dateien nicht überschrieben werden (außer bei Dateien mit Zusammenführungsproblemen). Vielen Dank!add
Stufe Inhalt aus dem Arbeits Baum auf den Index? Ich glaube nicht, dass ich verstehe, warum Ihre Antwort anhand der Beschreibung funktioniert.git add
inszeniert sie abergit reset
, was ich unmittelbar danach mache, setzt sie frei. Im Wesentlichen räumt es die nicht zusammengeführten Pfade und bringt mich zu meinem normalen Arbeitsbaum zurück, indem es Git vortäuscht.git add
wenn Sie gehengit reset
. Dasgit reset
"macht" effektiv rückgängiggit add
.git reset
(--mixed
<- Standard) berührt das Arbeitsverzeichnis effektiv nicht, sodass genau das, was sich in Ihrem Arbeitsverzeichnis befand, Konflikte zusammenführen und alles in Ruhe gelassen wird. Der Index (und technisch gesehen der Verzweigungskopf) wird jedoch zurückgesetzt (ohne Ref werden sie zurückgesetztHEAD
, was wahrscheinlich keine Änderung für den Verzweigungskopf bedeutet und allegit add
am Index vorgenommenen Änderungen rückgängig macht sowie den Status der nicht zusammengeführten Pfade löscht). .git reset
undgit stash drop
funktioniert gut. Es macht das, wasgit stash pop
ohne Konflikte geschehen wäre. Es scheint, dass dasgit add
nicht benötigt wird; Obwohl es vielleicht nützlich ist, haben Sie viele Dateien mit Konflikten. Sobald jedes Problem behoben ist , können sie hinzugefügt werden undgit status
verfolgen sie.Wenn Sie wie ich normalerweise den Inhalt des Arbeitsverzeichnisses mit dem der verwahrten Dateien überschreiben möchten und dennoch ein Konflikt auftritt, möchten Sie den Konflikt mithilfe
git checkout --theirs -- .
des Stammverzeichnisses lösen .Danach können Sie
git reset
alle Änderungen aus dem Index in das Arbeitsverzeichnis übernehmen, da die Änderungen an nicht in Konflikt stehenden Dateien anscheinend im Konfliktfall im Index verbleiben.Möglicherweise möchten Sie auch
git stash drop [<stash name>]
danach ausführen , um den Stash zu entfernen, dagit stash pop
er bei Konflikten nicht gelöscht wird.quelle
Beachten Sie, dass
Git 2.5 (2. Quartal 2015)Ein zukünftiger Git könnte versuchen, dieses Szenario unmöglich zu machen.Siehe Commit ed178ef von Jeff King (
peff
), 22. April 2015.(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 05c3967 , 19. Mai 2015)Hinweis: Dies wurde zurückgesetzt. Siehe unten .
Problem
Mit anderen Worten:
Lösung
Siehe Commit 1937610 (15. Juni 2015) und Commit ed178ef (22. April 2015) von Jeff King (
peff
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit bfb539b , 24. Juni 2015)quelle