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?

1voto

Paul Spaven Punkte 11

Gleiches Problem auf Windows 10 64 Bit, mit Git Bash Version 2.9.0.windows1 Ich verwende Atom als meinen Editor.

Das hat bei mir funktioniert: Ich fügte den Git-Software-Ordner hinzu (bei mir war das C:\Program Dateien \Git ) zu den Ausnahmen für Windows Defender.

Nachdem der Ausschluss hinzugefügt wurde, git checkout 'file' hat gut funktioniert.

0voto

ssamko Punkte 744

Ich bin auf Windows 10 und ich habe diesen Fehler, aber auch nach PC-Neustart und Öffnen mit Admin-Rechten nicht mein Problem beheben.

Es schien also, dass meine Repository-Rechte das Problem waren.

Um sicherzugehen, habe ich alle neuen Windows-Updates installiert, dann habe ich meinen PC neu gestartet und schließlich alle unnötigen Berechtigungen entfernt.

Starten Sie die Powershell als Administrator und führen Sie sie aus:

attrib -s <path_to_your_directory> 
attrib -r -a <path_to_your_directory> 

Einzelheiten zu diesem Powershell-Befehl finden Sie hier: https://docs.microsoft.com/en-us/Windows-server/administration/Windows-commands/attrib

0voto

sanmianti Punkte 155

In meinem Fall habe ich einfach den Git-Client auf die neueste Version aktualisiert und das Problem gelöst.

https://git-scm.com/downloads

0voto

The Red Pea Punkte 14681

In meinem Fall ist die Datei ein Shell-Skript ( *.sh Datei), um unser Projekt auf einem lokalen Entwicklungsserver für meine Entwickler bereitzustellen.

Das Shell-Skript sollte konsistent funktionieren und kann aktualisiert werden; daher habe ich es im selben Git-Projekt wie den Code gespeichert, den das Skript bereitstellen soll.

Das Shell-Skript führt eine ausführbare Datei aus und erlaubt dann, dass diese ausführbare Datei ausgeführt wird; das Skript läuft also noch; meine Shell hat das Skript also noch geöffnet; es ist also gesperrt.

I Ctrl+C d, um das Skript zu beenden (so dass mein lokaler Entwicklungsserver nicht mehr zugänglich ist), jetzt kann ich frei auschecken.

0voto

Wli Punkte 936

Das gleiche Problem, aber mit SourceTree (oder einem anderen Git-Client). Ich füge meine Antwort hinzu, da keine der Antworten auf meinen Fall zutrifft.

Das Ändern der Verzweigung von "develop" zu "main" ändert die tatsächlichen Dateien und Unterordner Ihres lokalen Ordners. Es kann vorkommen, dass ein Ordner, der im "Master" nicht vorhanden war, nicht vollständig gelöscht wird und Windows glaubt, dass Sie nur Ihre Zugriffsrechte verloren haben (selbst wenn Sie der Administrator sind). Beim Zusammenführen von "main" zu "develop" versucht der Git-Client, auf den Ordner zuzugreifen. Ohne Zugriffsrechte gibt er den genannten Fehler zurück.

  • Der Wechsel von einem Zweig zum neuesten kann das Problem beheben, und dann zurück zu master (überprüfen Sie, ob die Ordner/Dateien tatsächlich lokal gelöscht wurden).
  • Schließen des Kunden und/oder Ihres Redakteurs behebt das Problem nicht!
  • Neustart hilft, ist aber Zeitverschwendung (IMHO)

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