Git: lokale Änderungen können nicht rückgängig gemacht werden (Fehler: Pfad … ist nicht zusammengeführt)

Lesezeit: 5 Minuten

Git lokale Anderungen konnen nicht ruckgangig gemacht werden Fehler Pfad
mklhmnn

Ich habe folgenden Arbeitsbaumzustand

$ git status foo/bar.txt
# On branch master
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       deleted by us:      foo/bar.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

Datei foo/bar.txt ist da und ich möchte es wieder in den “unveränderten Zustand” bringen (ähnlich wie ‘svn revert’):

$ git checkout HEAD foo/bar.txt
error: path 'foo/bar.txt' is unmerged
$ git reset HEAD foo/bar.txt
Unstaged changes after reset:
M       foo/bar.txt

Jetzt wird es verwirrend:

$ git status foo/bar.txt
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   foo/bar.txt
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   foo/bar.txt
#

Dieselbe Datei in beiden Abschnitten, neu und geändert? Was sollte ich tun?

  • Ich wünschte, jemand könnte erklären, wie wir in diese Situation geraten, warum es passiert, und warum die Lösung funktioniert.

    – Marcos Dione

    5. August 17 um 17:09 Uhr

  • Ich geriet in diese Situation, als ich meinen Stash nach einem Rebase platzte, was mich in einen Merge-Konflikt brachte (Stash-Pop führt einen Merge aus)….Um das Problem zu lösen, habe ich ein “checkout –theirs” gemacht ….anscheinend meins Änderungen waren immer noch da … um diese zu entfernen … Ich habe erneut versucht, die Datei auszuchecken … da habe ich den obigen Fehler gesehen.

    – Arindam Roychowdhury

    20. Dezember 19 um 9:48 Uhr

Du hast es falsch herum gemacht. Sie sollten zuerst zurücksetzen, die Datei aus der Staging-Umgebung entfernen und dann auschecken, um lokale Änderungen rückgängig zu machen.

Versuche dies:

$ git reset foo/bar.txt
$ git checkout foo/bar.txt

  • Danke; Lief wie am Schnürchen! Ich musste mich verpflichten (nicht mit dem -a arg wurden die relevanten Änderungen bereits inszeniert) und dann konnte ich wie gewohnt pushen/pullen.

    – Patrick

    7. Januar 11 um 3:41 Uhr

  • Für mich war Folgendes erforderlich:
    $ git reset — foo/bar.txt
    $ git checkout — foo/bar.txt
    (Beachten Sie das zusätzliche “–” dazwischen)

    – Jan

    9. August 11 um 17:37 Uhr


  • Die gute Syntax ist “git reset HEAD file1 file2 …” dann “git checkout — file1 file2 …”

    – Thomas Decaux

    18. Juli 12 um 13:26 Uhr

  • Es ist immer amüsant, wenn die Antwort mit den meisten Stimmen im Grunde nur sagt: “Du machst es falsch” 🙂

    – Nathanchere

    16. Dezember 2012 um 23:39 Uhr

  • Eine Erklärung (was Dinge tun) wäre toll gewesen …

    – Kissaki

    23. November 13 um 19:21 Uhr

Git lokale Anderungen konnen nicht ruckgangig gemacht werden Fehler Pfad
Steffi

Das hat bei mir perfekt funktioniert:

$ git reset -- foo/bar.txt
$ git checkout foo/bar.txt

git checkout origin/[branch] .
git status

// Punkt (.) am Ende beachten. Und alles wird gut

In neueren Git-Versionen git restore soll eine “bessere” Möglichkeit sein, unerwünschte lokale Änderungen rückgängig zu machen, als die überladenen checkout. Großartig, das klingt vernünftig – ein nettes, einfaches, zweckgebundenes Werkzeug für eine allgemeine Operation.

Aber hier ist mein neuer „Lieblings“-Git-Bug. Ja, ich weiß, dass irgendein Idiot sagen wird: “Es ist kein Fehler, es ist beabsichtigt”. Aber bei dieser Art von Benutzeroberfläche bleibe ich beim Spitznamen “Bug”:

% git restore LEGAL
error: path 'LEGAL' is unmerged
# okay, fine...
% git restore --ignore-unmerged LEGAL
warning: path 'LEGAL' is unmerged
# Arg, what?!

(bereitgestellt von git 2.25.1)

Zuerst das kleine Problem: Wenn ein Tool aufgrund einer bestimmten Bedingung etwas verweigert, ist dies nicht nur eine Warnung. Beim am wenigsten es sollte sagen, dass die Operation nicht durchgeführt wurde. Jetzt muss ich nachforschen, ob die Operation tatsächlich durchgeführt wurde oder nicht (Hinweis: war es nicht).

Das zweite Problem ist natürlich offensichtlich. Schauen wir uns nun den Manpage-Eintrag an, um zu sehen, warum dieses fantastische Tool nicht das tut, was ich ihm sage:

   --ignore-unmerged
       When restoring files on the working tree from the index, do not
       abort the operation if there are unmerged entries and neither
       --ours, --theirs, --merge or --conflict is specified. Unmerged
       paths on the working tree are left alone.

Heiliger Rauch! Ich denke, die Git-ish-Lösung für das Problem mit der Benutzeroberfläche hier wird darin bestehen, die Option von umzubenennen --ignore-unmerged zu --ignore-unmerged-except-in-cases-where-we-do-not-want-to-allow-that--consult-documentation-then-source-code-then-team-of-gurus-when-you-cannot-figure-it-out---and-wait-while-half-of-them-argue-about-why-it-is-right-as-is-while-the-other-half-advocate-adding-four-more-options-as-the-fix.

Gehen Sie dann zur Community, um eine Lösung zu finden. Du traust dich ja nicht.

Offensichtlich hatte ich meine Refs nicht in einem Zustand, in dem die baumartigen Blobs mit den Commit-ishes von der Arbeitsdatei zum Staging-Bereich aufgelöst werden konnten … äh Index?

git checkout foo/bar.txt

hast du das probiert? (ohne HEAD-Schlüsselwort)

Normalerweise mache ich meine Änderungen auf diese Weise rückgängig.

  • Typischer Fehler beim Versuch a checkout mitten in einer Zusammenführung: $ git co path/to/file =Ergebnis=> error: path 'path/to/file' is unmerged => also, erster Durchlauf: $ git reset path/to/fileund dann die git checkout path/to/file sollte arbeiten.

    – michael

    12. Februar 13 um 5:37 Uhr


  • Wenn Sie HEAD nicht angeben, wird git checkout aus dem Index auschecken, was eine schwächere Operation ist (die Inhaltsquelle ist der Index und nicht HEAD). Außerdem glaube ich nicht, dass das in diesem Fall überhaupt einen Unterschied macht – mit dem spezifischen Problem, das die Frage stellte. Tat Sie Versuch das?

    – Kissaki

    23. November 13 um 19:19 Uhr

1643915887 486 Git lokale Anderungen konnen nicht ruckgangig gemacht werden Fehler Pfad
nimmthin

ich finde git stash sehr nützlich für die zeitliche Behandlung aller ‘schmutzigen’ Zustände.

  • Typischer Fehler beim Versuch a checkout mitten in einer Zusammenführung: $ git co path/to/file =Ergebnis=> error: path 'path/to/file' is unmerged => also, erster Durchlauf: $ git reset path/to/fileund dann die git checkout path/to/file sollte arbeiten.

    – michael

    12. Februar 13 um 5:37 Uhr


  • Wenn Sie HEAD nicht angeben, wird git checkout aus dem Index auschecken, was eine schwächere Operation ist (die Inhaltsquelle ist der Index und nicht HEAD). Außerdem glaube ich nicht, dass das in diesem Fall überhaupt einen Unterschied macht – mit dem spezifischen Problem, das die Frage stellte. Tat Sie Versuch das?

    – Kissaki

    23. November 13 um 19:19 Uhr

.

759140cookie-checkGit: lokale Änderungen können nicht rückgängig gemacht werden (Fehler: Pfad … ist nicht zusammengeführt)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy