394 Stimmen

git rebase: "error: cannot stat 'file': Erlaubnis verweigert"

Ich verwende Git und habe eine kleine Übergabe gemacht, gefolgt von einer großen. Ich beschloss, Folgendes zu verwenden git rebase um die beiden Commits vor dem Pushen zusammenzufassen. (Ich habe das noch nie gemacht.)

Das habe ich getan:

git rebase -i HEAD~2

So kam ich zu meinem Editor, in dem ich die frühere Übertragung auswählte und die spätere zerdrückte. Als ich speicherte, sagte Git:

Fehler: kann nicht angeben ' Dateiname ': Erlaubnis verweigert

Konnte sich nicht bewerben sha1 für spätere Übergabe ... Anfangszeile des Textes für diese Übertragung

Jetzt:

  • Keine der beiden Übertragungen erscheint, wenn ich git log .
  • git status sagt mir, dass ich "derzeit in keiner Filiale bin".
  • Eine Datei wird als geändert und im Index aufgeführt, und zwei Dateien werden als nicht verfolgt aufgeführt. Mein erster Commit hatte nur eine Datei (glaube ich), und mein zweiter Commit hatte ein gutes Dutzend.

Was ist passiert? Wie bringe ich das in Ordnung?

4voto

mmmdearte Punkte 101

Ich hatte ein ähnliches Problem. Aber es war sehr einfach zu lösen. Auf einem Windows-Rechner hatte mein Dateiexplorer einen Ordner geöffnet, der in einer Zweigstelle vorhanden war, aber nicht in der anderen, die ich ausgecheckt hatte. Durch Schließen des Dateiexplorers war das Problem gelöst.

4voto

RoundPi Punkte 5549

Ich habe dies gerade unter Win 7 erlebt.

$ git stash pop Fehler: kann nicht stat 'parentFolder/subfolder': Erlaubnis verweigert error: kann nicht stat 'parentFolder/subfolder': Erlaubnis verweigert

Die Diagnose:

1>Ich bin zu dem Unterordner gegangen und er ist dort und ich konnte ihn nicht löschen!

2>Verwenden Sie den "Prozess-Explorer" -> Suchen -> Handles und Dlls suchen -> geben Sie den Namen des "Unterordners" dort ein und suchen Sie.

Ergebnis: Es stellt sich heraus, dass XMLSpy eine der XML-Dateien geöffnet hat, schließen Sie XML Spy und versuchen Sie Stash Pop erneut, jetzt funktioniert es.

4voto

HotN Punkte 4029

Eine alternative Lösung, anstatt alle Anwendungen zu schließen, die das Verzeichnis sperren könnten, wie es in fast jeder anderen Antwort empfohlen wird, wäre die Verwendung eines Dienstprogramms, das die Dateien/das Verzeichnis entsperrt, ohne alles zu schließen. (Ich hasse es, Visual Studio neu starten zu müssen)

LockHunter ist das Programm, das ich verwende: https://lockhunter.com/ Wahrscheinlich gibt es auch noch andere, aber dieser hat sich für mich bewährt.

2voto

Perry Tew Punkte 2614

Bei mir wurde dieses Problem durch meinen Editor, Intellij, verursacht. Als Teil seiner internen Versionskontrolle hatte er alle versteckten Git-Dateien gesperrt. (Aus verschiedenen Gründen habe ich das Git-Plugin, das mit Intellij geliefert wird, nicht verwendet...)

Also öffnete ich ein normales Dos-Fenster als Administrator, wechselte in das Verzeichnis und führte aus

attrib -R /S

Dadurch wurde die Sperre für die Dateien aufgehoben, und danach funktionierte alles und ich konnte meine Änderungen mit dem GitHub-Windows-Client synchronisieren.

2voto

ladygargar Punkte 577

Ich stimme den obigen Antworten "Visual Studio schließen" zu.

Ein zusätzlicher Schritt, den ich jedoch auch nach dem Schließen von Visual Studio durchführen musste, war das manuelle töten die "devenv.exe" Visual Studio-Prozess im Task-Explorer. Nachdem ich dies getan hatte, konnte ich wieder in gitbash laufen:

Git-Pull

und die "kann nicht stat Dateiname Fehler" verschwunden. Möglicherweise liegt es daran, dass eine Visual Studio-Erweiterung den Prozess auch nach dem Schließen länger offen hält.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X