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?

0voto

PudparK Punkte 111

Ich beendete meinen Texteditor, der auf die Projektverzeichnisse zugriff, und versuchte dann, den Master-Zweig zusammenzuführen, und es funktionierte.

0voto

TheNoob Punkte 813

Ich bin gerade auf dieses Problem gestoßen. Keine der Antworten hier passiert, um dieses für mich zu lösen.

Am Ende waren es Nuget-Pakete, die ich in einem Zweig hinzugefügt hatte, der nach dem Wechsel zurück zum Master-Zweig nicht mehr zu existieren schien. Sobald ich eine Zusammenführung durchgeführt hatte, hieß es newtonsoft...xml could not stat. Ich ging zu der betreffenden Datei und öffnete sie, aber Windows meldete eine Fehlermeldung, dass die Datei nicht gefunden werden konnte (obwohl ich sie genau vor mir hatte)

Ich löste das Problem, indem ich die Datei mit der rechten Maustaste löschte (was funktionierte, aber ich konnte sie nicht öffnen, weil Windows sie nicht finden konnte???) und versuchte, sie erneut zusammenzuführen, und das Problem war gelöst.

Sehr seltsam.

Ich hoffe, das hilft später jemandem.

0voto

Shawesome Punkte 55

Ich habe auch auf einem Windows-Rechner mit Git Shell gearbeitet, als der gleiche Fehler auftrat.

Zu diesem Zeitpunkt hatte ich jedoch mehrere Git-Terminals geöffnet.

Das erste Terminal erhielt den Fehler, über den Sie oben geschrieben haben, und das andere Terminal hatte zuvor die grunt serve Terminalbefehl von yeoman (unten verlinkt). Das zweite Terminal musste offen bleiben, um eine lokale Serverinstanz zu hosten.

Das Beenden aller laufenden Windows-Terminalprozesse kann dazu führen, dass der Fehler verschwindet.

Zumindest hat das bei mir funktioniert. Nachdem ich das zweite Terminalfenster geschlossen hatte, konnte ich problemlos verschiedene Zweige auschecken und Dateien manipulieren.

Grunt Serve Befehl - Yeoman.I/O
http://yeoman.io/learning/

0voto

Ich bekam diesen Fehler, als mein VS1013 auf einem Zweig war, der auf 8.1 abzielte, und ich versuchte, einen 8.0-Zweig auszuchecken. Ich musste zu VS zurückkehren und ihm erlauben, UpdateAll. Dann konnte ich den 8.0-Zweig ohne Fehler auschecken.

-1voto

o_o Punkte 938

Wir haben das Berechtigungsproblem gelöst, indem wir mit der rechten Maustaste auf sh.exe in Programme geklickt und auf der Registerkarte Sicherheit die Option "Als Administrator ausführen" eingestellt haben.

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