Ich habe eine Git-Kasse. Alle Dateiberechtigungen unterscheiden sich von denen, die Git für richtig hält, daher werden sie alle als geändert angezeigt.
Wie setze ich alle Dateiberechtigungen auf das, was Git für richtig hält, ohne den Inhalt der Dateien zu berühren (ich möchte nur die Berechtigungen ändern)?
git
file
file-permissions
Dale Forester
quelle
quelle
Antworten:
Git verfolgt die Dateiberechtigung und macht Berechtigungsänderungen offen, wenn Patches mit erstellt werden
git diff -p
. Wir brauchen also nur:Als Einzeiler:
Sie können es auch als Alias zu Ihrer Git-Konfiguration hinzufügen ...
... und Sie können es aufrufen über:
Beachten Sie, wenn Sie eine Shell verwenden
bash
, stellen Sie sicher, dass'
anstelle von"
Anführungszeichen um das verwendet!git
wird. Andernfalls wird es durch den zuletzt ausgeführtengit
Befehl ersetzt.Vielen Dank an @Mixologic, um darauf hinzuweisen, dass durch einfaches Verwenden von
-R
ongit diff
der umständlichesed
Befehl nicht mehr erforderlich ist.quelle
fatal: unrecognized input
Versuchen
git config core.fileMode false
Von der
git config
Manpage:quelle
git checkout origin/master
für den Server festgeschriebene Dateiberechtigungen auf meine lokale Arbeitskopie festgelegt werden? Denn jedes Mal, wenn ich V8 für ArangoDB erstelle, werden die Dateiberechtigungen so geändert, dass der Zugriff auf den gesamten Erstellungsordner verweigert wird (auch mit erhöhten Rechten; Windows 7+). Ich muss alle lokalen Dateiberechtigungen korrigieren, bevor ich den Erstellungsprozess fortsetzen kann. Kann das auchcore.filemode false
beheben? Ich vermute, dass Git Linux-Berechtigungen auf meinem Windows-Computer festlegen kann. Die Build-Skriptefilemode
zufalse
!Git speichert keine anderen Dateiberechtigungen als ausführbare Skripte. Erwägen Sie die Verwendung von git-cache-meta , um den Besitz und die Berechtigungen von Dateien zu speichern.
Git kann nur zwei Arten von Modi speichern: 755 (ausführbar) und 644 (nicht ausführbar). Wenn Ihre Datei 444 Git wäre, würde sie 644 speichern.
quelle
umask
sowie einer Konfigurationseinstellung (siehe stackoverflow.com/a/12735291/125150) ....a mode of 100644, which means it’s a normal file. Other options are 100755, which means it’s an executable file; and 120000, which specifies a symbolic link. The mode is taken from normal UNIX modes but is much less flexible — these three modes are the only ones that are valid for files (blobs) in Git (although other modes are used for directories and submodules).
funktioniert in den meisten Fällen, aber wenn Sie externe Diff-Tools wie meld installiert haben, müssen Sie --no-ext-diff hinzufügen
wurde in meiner Situation gebraucht
quelle
Sie können auch versuchen, einen Pre / Post-Checkout-Hook zu verwenden.
Siehe: Anpassen von Git - Git Hooks
quelle
Ich benutze Git von Cygwin unter Windows, die
git apply
Lösung funktioniert bei mir nicht. Hier ist meine Lösung: Führen Siechmod
jede Datei aus, um ihre Berechtigungen zurückzusetzen.quelle
git diff -p
In Muhqus Antwort werden möglicherweise nicht alle Unstimmigkeiten angezeigt.core.filemode
istfalse
(dies ist die Standardeinstellung für MSysGit).Dieser Code liest stattdessen die Metadaten direkt:
Ein Einzeiler ohne Produktionsqualität (ersetzt Masken vollständig):
(Die Gutschrift für "$ '\ 0'" geht an http://transnum.blogspot.ru/2008/11/bashs-read-built-in-supports-0-as.html )
quelle
Am einfachsten ist es, die Berechtigungen einfach wieder zu ändern. Wie @kroger feststellte, verfolgt git nur ausführbare Bits. Sie müssen also wahrscheinlich nur ausführen
chmod -x filename
, um das Problem zu beheben (oder+x
wenn dies erforderlich ist).quelle
git show
: diff --git a / OpenWatch / src / org / ale / openwatch / fb / FBUtils.java b / OpenWatch / src / org / ale / openwatch / fb / FBUtils.java index cd6fa6a..e5b0935 100644 Das Bit in Fettdruck gibt es die Dateiberechtigungen.100644
auf ändern100755
. Ich denke nicht, dass Sie eine Ablehnung verdienen; Git sollte abgewählt werden. Es ist auf so viele Arten auf so vielen verschiedenen Ebenen so kaputt ...Das
etckeeper
Tool kann Berechtigungen verarbeiten und mit:Sie können es für andere Verzeichnisse als verwenden
/etc
.Installieren Sie mithilfe Ihres Paketmanagers oder beziehen Sie die Quellen über den obigen Link.
quelle