Ich habe das gleiche Problem wie das OP in diesem Beitrag, aber ich verstehe die als richtig gekennzeichnete Antwort nicht (ich sehe nicht, dass sie erklärt, wie die Situation behoben werden kann).
Ich mache das und bekomme diesen Fehler:
$ git update-index --assume-unchanged web.config
fatal: Unable to mark file web.config
Die Datei wird dem Repository hinzugefügt
Es ist NICHT in
.git/info/exclude
Es ist NICHT in
.gitignore
(es war, aber ich habe es herausgenommen und dann gezwungen, web.config mit hinzuzufügengit add -f web.config
, festzuschreiben und diese Änderungen in das Repo zu übertragen)Wenn ich Git ls-files -o mache, ist es NICHT da
Was kann ich also tun, um das Problem zu beheben?
git ls-files -o
. Wenn ja, ist es nicht im Repo.Antworten:
Ich hatte das gleiche Problem wie Sie und hatte die gleichen vier Schritte ausgeführt, die Sie oben angegeben haben, und hatte die gleichen Ergebnisse. Dies beinhaltete die Tatsache, dass meine Datei bei der Ausführung aufgelistet wurde
git ls-files -o
. In meinem Fall habe ich jedoch auch versucht,git update-index --assume-unchanged
eine Datei auszuführenls-files -o
, die bei der Ausführung nicht aufgeführt war , und trotzdem den gleichen Fehler "fatal: Unable to mark file
" erhalten.Ich dachte, dass es vielleicht ein Fehler war, und lud die neueste Version von git herunter, aber das half nicht.
Was mir schließlich klar wurde, ist, dass bei diesem Befehl zwischen Groß- und Kleinschreibung unterschieden wird! Dies beinhaltet den vollständigen Pfad und den Dateinamen. Nachdem der Pfad zum Verzeichnis so aktualisiert wurde, dass der vollständige Pfad mit der richtigen Schreibweise angegeben wurde, wurde der Befehl ordnungsgemäß ausgeführt.
Beachten Sie, dass dies bei Git für Windows der Fall war, sodass Ihre Ergebnisse bei anderen Plattformen variieren können.
quelle
Ich hatte das gleiche Problem auf einem Mac. Groß- und Kleinschreibung war für mich kein Problem - das Problem war, dass ich zuerst meinen Git zurücksetzen musste:
Problem:
Lösung:
quelle
--skip-worktree
). Ich habe lokale Änderungen durch Ausführen entfernt,git restore .
aber das Überspringen gab immer noch den Fehler. Schließlich habe ich versucht, die Datei zu löschen. Erstaunlicherweise sagte Git nicht, dass es eine Veränderung gab. Es ist also klar, dass etwas Funky passiert ist, seit Git es definitiv verfolgt hat und ich es definitiv gelöscht habe und es definitiv nicht gesagt hat, dass das eine Änderung war.In meinem Fall war der Baum, den ich markierte, ein Verzeichnis und keine Datei wie in Ihrem Fall, und mir fehlte der Schrägstrich nach seinem Namen.
Falsch -
Richtig -
Beachten Sie den Schrägstrich (/) am Ende.
quelle
fatal: Datei Localization / el-GR.js kann nicht markiert werden
Was Sie tun können, ist:
$git update-index --assume-unchanged <file name>
Das hat mir geholfen! :) :)
quelle
$ git update-index --assume-unchanged ./.idea/vcs.xml fatal: Unable to mark file .idea/vcs.xml
$ cd .idea
git update-index --assume-unchanged .
Hat funktioniert, danke!Wenn Ihr Pfad Leerzeichen enthält, wird dieser Fehler möglicherweise auch dann angezeigt, wenn Sie das richtige Gehäuse haben.
Dies führt zu dem "schwerwiegenden" Fehler:
Um dies zu beheben, fügen Sie einfach Anführungszeichen um den Pfad hinzu.
quelle
Mein Problem war, dass ich den Befehl mit einem * Platzhalter ausprobiert habe, vorausgesetzt, er wäre rekursiv, aber das war nicht der Fall.
Also habe ich getan
ausführen
arbeitete damals für mich und führte nicht zu OPs und meinem Problem.
quelle
Ich hatte dieses Problem, als ich versuchte, * .orig-Dateien zu entfernen.
Folgendes habe ich getan, um sie zu entfernen:
wenn das nicht funktioniert:
quelle
Stellen Sie sicher, dass die Datei zu Git Repo hinzugefügt wurde. Wenn nicht, fügen Sie die Datei zu Git Repo hinzu, und versuchen Sie dann, dass sie funktioniert.
quelle
--assume-unchanged
Es geht um langsame Dateisysteme, und ein Benutzer verspricht, dass Git diese Datei nicht überprüfen muss, da Git davon ausgehen kann, dass sie unverändert ist. Aber einige Befehle überprüfen und produzieren immer noch "Überraschung"!Nicht für Dateien verwenden, die sich ändern.
Es tut mir leid, der Überbringer dieser Neuigkeiten zu sein (ich habe einen Patch in Bearbeitung, um diese Dokumentation zu ändern).
quelle
git rm --cached filename
die Datei gelöscht wird, wenn andere ziehenIn meinem Fall habe ich versucht, eine der oben genannten Methoden anzuwenden, aber kein Glück.
Nach vielen Versuchen dachte ich nur daran, meine Datei zum Indizieren hinzuzufügen.
Git lehnte diese Aktion ab, aber er riet mir, sie gewaltsam zu machen.
Und das hat bei mir funktioniert.
quelle
Stellen Sie sicher, dass Sie "web.config" eingecheckt haben.
Ist dies nicht der Fall, wird diese Fehlermeldung angezeigt.
quelle
Vielleicht nützlich für jemanden. Ich hatte das gleiche Problem und war kein Syntaxproblem, kein Name mit Leerzeichen, kein Pfadproblem und der Befehl git reset funktionierte nicht. Ich habe aus einem Ordner in Apache www festgeschrieben und der Apache-Dienst wurde gestoppt. Der Apache-Dienst wurde erneut gestartet und der Fehler ist behoben
quelle
Ein häufiger Fehler bei der Verwendung dieses Befehls besteht darin, anzunehmen, dass die Datei entweder nicht verfolgt oder von git bereits ignoriert wurde.
Stellen Sie zunächst sicher, dass die Datei durch Ausführen verfolgt wird
Wenn Ihre Datei nicht angezeigt wird, müssen Sie sie zuerst hinzufügen:
Wenn dies Ihre Datei anzeigt oder Sie diese Datei bereits zu git hinzugefügt haben, sollten Sie in der Lage sein, git-Annahmebefehle normal auszuführen:
oder für Ordner
Sie können durch Ausführen überprüfen, ob angenommen wird, dass Ihre Datei ignoriert wird
Das S-Zeichen steht für übersprungene Dateien.
quelle
Für alle zukünftigen Besucher. Keiner der oben genannten Punkte hat mein Problem gelöst. Mir wurde klar, dass die
.gitignore
Datei im richtigen Verzeichnis abgelegt werden muss. In meinem Fall wurde.gitignore
das Problem behoben , nachdem ich in das Stammverzeichnis der Anwendung gewechselt war.quelle
Überprüfen Sie, ob die zu markierende Datei vorhanden ist und richtig geschrieben wurde, insbesondere der Dateipfad und das Dateitrennzeichen. Die Dateitrennzeichen von Windows-System und Linux-System sind in verschiedene Richtungen.
quelle
Ich habe festgestellt, dass dies manchmal nicht funktioniert, weil Sie die Datei bereits an Ihren .gitignore übergeben und einen Push oder Pull ausgeführt haben. Sie müssen nur den Push ausführen und Ihre Datei sollte bei nachfolgenden Commits ignoriert werden, auch wenn Sie die Datei lokal ändern.
quelle
Ich hatte das gleiche Problem mit Cygwin in Windows. Geben Sie den vollständigen Dateipfad an
quelle