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?

7voto

attolee Punkte 572

Bei Verwendung von SourceTree in Win 10 wurde das Problem durch Schließen des Atom-Editors behoben.

Fehler reproduzieren:

  1. Erstellen Sie in Zweig B eine md-Datei, bearbeiten Sie sie mit Atom, speichern Sie sie und übertragen Sie sie.
  2. Wechseln Sie zu Zweig A, ziehen Sie neue Commits vom Server herunter.
  3. Versuchen Sie, zurückzuschalten, aber es heißt: "error: cannot stat 'file': Erlaubnis verweigert".

7voto

ahnbizcad Punkte 10172

Dies kann auch passieren, wenn Sie SublimeText verwenden und das Popup-Fenster, das Sie zum Kauf des Programms auffordert, nicht geschlossen wird.

6voto

Dies ist häufig der Fall, wenn Sie Software/Anwendungen zur Vorverarbeitung einsetzen, die das Projekt überwachen, z. B. Prepros oder Codekit. Auch Atom und Sublime (und sogar Notepad++) können dies verursachen, wenn eine Datei im Projekt gerade bearbeitet wird.

Der einfachste Weg, das Problem zu umgehen, besteht darin, alle geöffneten Projektdateien zu schließen, die Zweige zusammenzuführen und sie dann erneut zu öffnen, um sie zu aktualisieren. Auf diese Weise werden auch Probleme vermieden, bei denen das Programm nicht mehr weiß, welche Änderungen vorgenommen wurden, so dass Sie gezwungen sind, das Projekt/die Projekte von Hand zu aktualisieren.

6voto

Louis Punkte 1777

Ist mir unter Windows bei der Neubasierung im Inneren passiert Integriertes IntelliJ-Terminal . Ich bemerkte, dass ich Git-Bash Client-Instanz, die parallel läuft.

Schließen Git-Bash das Problem gelöst.

5voto

Navy Flame Punkte 747

Versuchen Sie, IDE wie Sublime, VS Code, Webstorm,... zu schließen und schließen Sie Ihre Programme, die den Ordner geöffnet haben, wie CMD, Powershell, CMDer, Terminal,... wird das Problem beheben.

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