Kann “Änderungen nicht zum Festschreiben bereitgestellt” nicht entfernen

Lesezeit: 4 Minuten

Benutzer-Avatar
FractalSpace

Ich bin nicht in der Lage, diesen Zustand zu beseitigen, in dem mein Repo gesperrt zu sein scheint. Nach einem Zurücksetzen auf HEAD ~ 1 erhalte ich immer wieder diese Benachrichtigung, dass diese einzelne Datei geändert wird. ‘Hinzufügen’ und ‘Zur Kasse’ haben keine Auswirkung. Ich habe core.autocrlf und core.safecrlf nicht gesetzt (leer).

Siehe unten:

$ git --version
git version 1.7.9.6 (Apple Git-31.1)

$ git status

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   a_file_name.cpp

Die folgenden Befehle (einzeln ausgeführt) haben keine Auswirkung:

$ git checkout -- a_file_name.cpp
$ git reset a_file_name.cpp
$ git add a_file_name.cpp
$ git reset --hard
$ git clean -n
<nothing>
$ git clean -f
<nothing>

$ git status

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   a_file_name.cpp

und es geht weiter…

Was habe ich falsch gemacht?

Antwort auf den Vorschlag von @Don unten (git rm), keine Änderung, aber so geht es:

$ git rm 
error: 'a_file_name.cpp' has local modifications
(use --cached to keep the file, or -f to force removal)
$ git rm -f a_file_name.cpp
rm 'a_file_name.cpp'
$ git status

# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    a_file_name.cpp
#
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       deleted:    a_file_name.cpp
#

$ git commit -m"tmp"
[master 2a9e054] tmp
1 file changed, 174 deletions(-)
delete mode 100644 a_file_name.cpp

$ git status
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       deleted:    a_file_name.cpp
#

Ziemlich zurück zu sq.1

  • Was sind Ihre Zeilenende-Einstellungen (autocrlf, safecrlf, .gitattributesetc.)?

    – ellotheth

    29. November 2012 um 17:15 Uhr

  • hast du es einfach mit git –stash versucht und einfach alle deine Änderungen verstaut?

    – Herr Brightside

    29. November 2012 um 17:21 Uhr

  • Was passiert, wenn Sie es tun git checkout -- a_file_name.cpp? Stellen Sie außerdem sicher, dass Sie sich im selben Verzeichnis wie die Datei befinden, wenn Sie dies ausführen.

    – Code-Lehrling

    29. November 2012 um 18:38 Uhr

  • @FractalSpace: Es macht es schwierig, Ihre Frage zu beantworten, ob das, was wie Befehle und Ausgaben aussieht, tatsächlich gefälscht ist und entscheidende Details fehlen.

    – CB Bailey

    29. November 2012 um 21:05 Uhr

  • @FractalSpace: Wenn Sie sich in diesem Fall nicht im richtigen Verzeichnis befanden, verstehe ich nicht, warum der Git-Status Ihnen nicht den richtigen relativen Pfad gegeben hat, z # modified: sub-dir/a_file_name.cpp. Wenn Sie dies reproduzieren können, sollten Sie einen Fehler melden. Git sollte dies definitiv nicht tun.

    – CB Bailey

    29. November 2012 um 21:10 Uhr


Benutzer-Avatar
Goulart

git commit -a -m "message"

Die Option -a fügt alle verfolgten Dateien mit Änderungen hinzu

Benutzer-Avatar
Farmi

Ein Umweg, der für mich funktioniert hat, ist:

  1. erstelle die Datei neu, die ich gelöscht habe.

  2. git add path/filename

  3. git rm --cached path/filename

  4. lösche die Datei

  5. git add .

  6. git commit --amend # if not on an already pushed branch.

  • Ja, das hat bei mir funktioniert, eine Zusammenführung durchgeführt und es gab eine Datei mit demselben Namen, also wurde einer ~HEAD vorangestellt. Ich habe es manuell gelöscht und die Zusammenführung übernommen. Dann gab es eine Phantomdatei, die ich weder hinzufügen noch löschen konnte … Außerdem wurde mir klar, dass die nicht bereitgestellte Datei keine Großbuchstaben hatte, aber meine Datei auf der Festplatte hatte Großbuchstaben …

    – Ambroise Rabier

    12. Juli 2018 um 10:56 Uhr

Stellen Sie sicher, dass Sie sich im selben Verzeichnis wie die Datei befinden, wenn Sie eine ausführen git Befehle. Alternativ können Sie einen relativen oder absoluten Pfad für Dateien verwenden, mit denen verwendet wird git Befehle. Die Ausgabe von git status sollte Geben Sie das Unterverzeichnis an, in dem sich die Datei befindet. Ich finde es seltsam, dass die Ausgabe, die Sie hier gepostet haben, das nicht zeigt.

  • Ich fand es hilfreicher, die Befehle nicht aus demselben Verzeichnis auszuführen, sondern aus dem Verzeichnis der obersten Ebene des Git-Projekts

    – Josiah Yoder

    20. April 2019 um 15:18 Uhr

  • @JosiahYoder Ja, das kannst du auch.

    – Code-Lehrling

    21. April 2019 um 18:54 Uhr

Benötigen Sie Änderungen in der geänderten Datei? git-reset belässt die Dateien standardmäßig im Verzeichnisbaum.

git reset --hard

wird die Dateien in Ihrem Arbeitsbaum mit den Dateien im Commit zurücksetzen und überschreiben.

Haben Sie nach jedem der Schritte ein git diff durchgeführt, um zu sehen, ob tatsächlich Änderungen vorhanden sind?

Dies könnte passieren, wenn die betreffende Datei eine andere Groß-/Kleinschreibung hat.

in meinem Fall war es

README.md
readme.md

git lässt dich nicht einfach git add ... ein Fallwechsel.

Sie können das beheben, indem Sie so etwas tun

git mv -f readme.md README.md

1175590cookie-checkKann “Änderungen nicht zum Festschreiben bereitgestellt” nicht entfernen

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

Privacy policy