2008-12-10 10 views
17

ich alle Dateien im aktuellen Verzeichnis zu git hinzufügen möchten git:kann nicht alle Dateien hinzufügen, aufgrund Berechtigungen

git add . 
error: open(".mysql_history"): Permission denied 
fatal: unable to index file .mysql_history 

ist das in Ordnung. Diese Datei befindet sich zufällig in diesem Verzeichnis und gehört root. Ich möchte alle anderen Dateien hinzufügen. Gibt es eine Möglichkeit, dies zu tun, ohne manuell jede Datei manuell hinzufügen zu müssen?

Ich weiß, dass ich die Datei zum Ausschließen oder .gitignore hinzufügen konnte, aber ich möchte es nur Dinge basierend auf Berechtigungen ignorieren (es gibt eine gute Chance, andere Dateien wie folgt in das Verzeichnis und Hinzufügen hinzufügen sie zu .gitignore die ganze Zeit ist ein Schmerz).

Antwort

28

Verwenden git add --ignore-errors .

Dies wird noch einen Fehler für die unlesbaren Datei (en), nicht aber ein fataler geben. Die anderen Dateien werden hinzugefügt.

+1

Dies funktioniert, mit, aber nur auf git 2.6 und bis es scheint :) – singpolyma

+0

Dank dafür. @matli – ashishsony

+5

Wenn Sie VS verwenden, kann dies passieren. In meinem Fall musste ich alle Visual Studio-Instanzen schließen. Durch Herunterfahren von IIS Express und Neustarten von Visual Studio wird das Problem ebenfalls behoben. – Dhanuka777

4

Wäre es hilfreich, wenn Sie diese Datei zu Ihrer .gitignore-Datei hinzugefügt hätten? So würden alle anderen Dateien versioniert und diese Datei würde ignoriert werden (es sei denn, du brauchst sie).

3

Nur die Datei ausschließen. Sie können .mysql_history zu einer .gitignore Datei hinzufügen oder zu .git/info/exclude hinzufügen.

Das Hinzufügen eines Eintrags zu .gitignore wird die Einstellung mit dem Repo propagieren (seit .gitignore ist mit dem Repo gespeichert); Hinzufügen zu .git/info/exclude macht es "persönlich", weil diese Datei nicht propagiert mit dem Repo ist. In jedem Fall wird .mysql_history von git-add und Freunden ignoriert.

Sie können mehr über das Ignorieren von Dateien mit Git auf diesem man page lesen.

4
sudo chown $(whoami): .git/objects/ -R; git add --ignore-errors . 

reparierte es für mich. Die erste Hälfte feste Besitz, (jemand eingecheckt als root, frech) und die zweite Hälfte macht Fehler nicht tödlich. Die zweite Hälfte allein half mir herauszufinden, welches Verzeichnis root besaß.

1

Ich benutzte @matli Lösung, aber immer noch manchmal Probleme. landete ich

git add --ignore-errors --force .

Verwandte Themen