Ich habe viele andere Threads darüber gesehen und sie helfen nicht.
Ich habe ein sehr einfaches Repo - zwei JavaScript-Dateien. Ich habe mehr als 100 GB auf einem Macbook. Wenn ich versuche, die Dateien in ein Unterverzeichnis zu verschieben und die Änderungen, die ich erhalte, lokal durchzuführen ...
fatal: Neue Indexdatei kann nicht geschrieben werden
Dies geschieht unabhängig davon, ob ich alle Aktionen im Terminal ausführe oder ob ich eine GUI wie SourceTree verwende. Außerdem wird eine der Dateien gesperrt und ich kann das Arbeitsverzeichnis erst löschen, wenn ich mich abmelde und wieder anmelde.
Warum passiert dies? Verhindert das Schloss die Inszenierung von etwas? Wenn ja, was / wie entsperre ich die Problemdatei unter OS X? Das Remote-Repo ist Google Code, wenn das einen Unterschied macht, obwohl ich noch nicht auf die Remote drücke. Alles ist lokal.
./git
Ordners.Antworten:
In meinem Fall hatte die Festplatte nicht mehr genügend Speicherplatz, sodass ich Dateien von der Festplatte löschen musste, um Speicherplatz zu schaffen.
quelle
Ich habe das gleiche Problem in den letzten Tagen. Ohne mein Wissen war das gesamte Repo in ein neues Dateisystem verschoben worden. Als ich versuchte, den Git-Status auszuführen, wurde plötzlich gemeldet, dass jede Datei im Repo udpiert worden war.
Mögliche Lösungen
Nach langem Durchsuchen von Google habe ich Folgendes versucht:
tl: dr - schmutzige Lösung
Das einzige Problem, das behoben werden konnte, war das Kopieren der Indexdatei, das Löschen des Originals und das Umbenennen der Kopie.
Ich weiß, dass es nicht wirklich eine 'Lösung' ist, aber jetzt funktioniert es magisch> <, wobei alle Dateien / Zweige intakt sind. Wenn jemand weiß, warum dies funktionieren könnte, sagen Sie es.
quelle
In meinem Fall wurde das Problem durch Anhalten der Dropbox-Synchronisierung behoben
quelle
Ich hatte das gleiche Problem auf einem Mac. Es scheint durch Dateisystem-ACLs verursacht zu werden. Versuchen Sie
chmod -RN /path/to/repo
, die ACLs zu löschen. Danach konnte ich Änderungen vornehmen. Löschen Sie mit dem Trick zum Kopieren der Indexdatei das Original und verschieben Sie die Kopie zurück, um das gleiche Ergebnis zu erzielen.quelle
Wenn Sie Ihr Github-Setup in einem Online-Synchronisierungsdienst wie Google Drive oder Dropbox eingerichtet haben, deaktivieren Sie die Synchronisierung, da der Synchronisierungsdienst versucht, in die Datei zu lesen / schreiben, während Github versucht, dasselbe zu tun, was dazu führt, dass Github nicht funktioniert korrekt.
quelle
Mir ist passiert, dass die Datei .git / index von einem anderen Prozess (meinem lokalen Entwicklungswebserver) verwendet wurde. Ich habe den Prozess beendet und dann hat es funktioniert.
quelle
Das Schließen von Visual Studio Code (in meinem Fall wird ein Hintergrundjob für den automatischen Uploader ausgeführt, der beim Speichern von Dateien ausgeführt wird) hat das Problem für mich behoben.
Dank für die Lösung: mein Freund und Kollege Arnel.
quelle
Das hat bei mir funktioniert:
quelle
In meinem Fall fügte die Lösung nur dem neuen Benutzer die Berechtigung hinzu.
Als ich ein neues Betriebssystem installiert habe, meine Repos verschoben habe und genau dieser Fehler angezeigt wurde, habe ich den Stammordner ausgewählt und dann den authentifizierten Benutzer hinzugefügt, um alle zu überprüfen
quelle
Ich hatte ACL (irgendwie) an alle Dateien im .git-Ordner angehängt.
Überprüfen Sie es mit
ls -le
im Ordner .git.Sie können die ACL mit entfernen
chmod -N
(für einen Ordner / eine Datei) oderchmod -RN
(rekursiv)quelle
Ich denke, einige Hintergrundsicherungslösungen wie Google Backup und Sync blockieren den Zugriff auf die Indexdatei. Ich schloss die Anwendung und Sourcetree hatte überhaupt keine Probleme. Scheint, dass Dropbox dasselbe tut (@tonymayoral).
quelle
In meinem Fall war es ein gleichzeitig laufendes EGit. Nach dem Neustart von Eclipse funktioniert es wie gewohnt.
quelle
Wenn Sie sich in einer Windows-Box befinden, stellen Sie sicher, dass das von Ihnen verwendete Programm, unabhängig davon, ob es sich um den Quellbaum oder ein Git-Terminal handelt, als Administrator ausgeführt wird. Ich habe genau die gleiche Fehlermeldung erhalten. Sie können entweder mit der rechten Maustaste auf das Programm klicken, um es als Administrator auszuführen, oder seine Eigenschaften so ändern, dass es immer als Administrator ausgeführt wird.
quelle
Nicht genügend Speicherplatz ist ein Problem. Aufräumen und erneut versuchen
quelle
Ich hatte das gleiche Problem. Ich habe meinen Computer neu gestartet und das Problem wurde behoben.
quelle
Hast du 'git add' versucht? . wird es alle Änderungen? (Sie können unnötig hinzugefügte Dateien entfernen, indem Sie HEAD HEIT zurücksetzen.)
quelle
Die Fehlermeldung
fatal: Unable to write new index file
bedeutet , dass wir nicht den neuen Inhalt in der git Indexdatei schreiben konnten.git\index
(siehe hier für weitere Informationen über git Index). Nachdem ich alle Antworten auf diese Frage überprüft habe, fasse ich die folgenden Ursachen zusammen:.git\index
von anderen Benutzern oder Prozessen gesperrt. ( Lösung : Entsperren Sie die Datei)Der Link Herausfinden, welcher Prozess eine Datei oder einen Ordner in Windows sperrt, gibt den folgenden Ansatz an, um den Prozess herauszufinden, der eine bestimmte Datei sperrt:
Verwenden Sie den obigen Ansatz, um herauszufinden, welcher Prozess gesperrt ist,
.git\index
und stoppen Sie dann die ausführbare Sperrdatei. Dies wird freigeschaltet.git\index
.Beispielsweise zeigt die Prozess-Explorer-Suche , dass
.git\index
durch gesperrt istvmware-vmx.exe
. Das Anhalten der virtuellen VMWare Player-Maschine (die über einen freigegebenen Ordner auf das Git-Repo zugegriffen hat) hat das Problem behoben.quelle
WENN SIE DIES WÄHREND EINER REBASE ERHALTEN:
Dies wird höchstwahrscheinlich durch eine Software verursacht, die die Indexdatei Ihres Repos sperrt, z. B. Sicherungssoftware, Antivirenprogramme, IDEs oder andere Git-Clients.
In den meisten Fällen ist die Sperre nur für einen kurzen Moment und geschieht daher nur aus Zeitgründen und aus Pech.
Allerdings
git rebase --continue
wird sich beschweren über die nächste Befehl ist ein leerer begehen:Um dies zu beheben, führen Sie es einfach aus
git reset
und versuchen Sie esgit rebase --continue
erneut.quelle
Problem: Beim Auschecken einiger geänderter Dateien in Git ist dieser Fehler aufgetreten. Ich hatte zwei Benutzer ABC und XYZ. Dateien haben uid: gid von ABC, aber es hat keinen Git-Zugriff und versucht, die Dateien mit demselben auszuchecken.
Die Lösung, die ich versucht habe: XYZ hat Git-Zugriff, hat versucht, Dateien mit sudo auszuchecken und es hat funktioniert .. !!
quelle
Folgendes hat bei mir funktioniert:
Kontext:
Erstellen eines Projekts auf einem Server
git status
gibt a zurückHEAD detached at <commit-SHA>
Was auch immer ich vor Ort operierte, ich hatte diesen Fehler. Genauer:
Lösung
<work-dir>/.git/index
.git status
würde anzeigen, dass nicht alle Dateien im Projekt verfolgt werden (keine Überraschung hier).git reset HEAD --hard
HEAD detached at <commit-SHA>
wenn du ein machstgit status
, aber dann solltest du dazu in der Lage seingit checkout <some-branch>
und du bist wieder auf dem richtigen Weg!
!! WICHTIG !!
Dies funktioniert nur, weil ich "nur" baue. Am Code wurden keine wertvollen Änderungen vorgenommen. Wenn Sie sich tatsächlich in der "Entwicklungszeit" befinden, würde ich empfehlen, zuerst Ihre Arbeit zu speichern oder eine andere Methode zu wählen.
Hoffe es wird helfen :).
quelle
Ich hatte dieses Problem mit GitExtensions unter Windows. Behoben durch Erteilen der vollständigen Berechtigung für den aktuellen Benutzer (mich) für den Ordner, der das Repo enthielt.
Ein anderes Mal konnte ich, obwohl ich den Fehler von Git Extensions erhielt, dieselben Dateien aus Visual Studio 2015 festschreiben.
Ein anderes Mal musste ich die "Index" -Datei aus dem .git-Ordner löschen
quelle
Mein Fall ist ein bisschen interessant:
Ich führe das Git-Protokoll aus, um ein bestimmtes Commit zu überprüfen. Dann habe ich es nicht richtig beendet. Ich drücke Strg + C, um es zu beenden.
Dann scheint der Index gesperrt zu sein. Also führe ich git log erneut aus und drücke dann Q, um es zu beenden.
Problem gelöst. :) :)
quelle
In meinem Fall war es eine
nodemon
Instanz, die das Dateisystem auf Änderungen überwacht.quelle