Aktualisieren und Festschreiben nur der Berechtigungen einer Datei mithilfe der Git-Versionskontrolle

Lesezeit: 3 Minuten

Aktualisieren und Festschreiben nur der Berechtigungen einer Datei mithilfe der
BreakPhreak

Habe mich gerade umgedreht some.sh Datei in eine ausführbare Datei (chmod 755 ...), wurden die Berechtigungen aktualisiert, aber nicht der Inhalt. Gibt es einen Weg zu begehen die Datei in git, damit das ausführbare Bit wiederhergestellt/eingestellt wird Klon / Kasse / ziehen ?

Aktualisieren: Wie kann ich nachverfolgen, dass die neuen Berechtigungen übermittelt wurden github?

1646344688 39 Aktualisieren und Festschreiben nur der Berechtigungen einer Datei mithilfe der
ewzwinker

Der Artikel @fooMonster hat bei mir funktioniert

# git ls-tree HEAD
100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe    script.sh

Wie Sie sehen können, hat die Datei die Berechtigung 644 (wobei die 100 ignoriert wird). Wir möchten es auf 755 ändern:

# git update-index --chmod=+x script.sh

bestätige die Änderungen

# git commit -m "Changing file permissions"
[master 77b171e] Changing file permissions
0 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 script.sh

  • Es sollte beachtet werden, dass Sie eigentlich ‘-x/+x’ verwenden müssen. Sie können keine anderen Berechtigungen oder eine Bitmaske festlegen.

    – Devolus

    21. September 2018 um 11:50 Uhr

  • Hinweis verwenden git commit -a hat nichts für mich getan, aber das Setzen von Nachrichten in der Befehlszeile hat es getan. Eine kleine Macke

    – JonnyRaa

    24. Dezember 2018 um 11:39 Uhr

  • Die Befehlsreihenfolge sollte lauten: # git update-index --chmod=+x script.sh # git ls-tree HEAD # git commit -m "Changing file permissions" # git push

    – SimonDepelchin

    9. September 2019 um 7:18 Uhr

1646344688 31 Aktualisieren und Festschreiben nur der Berechtigungen einer Datei mithilfe der
Vinzenz B.

Standardmäßig aktualisiert Git die Berechtigungen zum Ausführen von Dateien, wenn Sie sie ändern. Es wird keine anderen Berechtigungen ändern oder nachverfolgen.

Wenn Sie beim Ändern der Ausführungsberechtigung keine Änderungen sehen, haben Sie wahrscheinlich eine Konfiguration in Git, die den Dateimodus ignoriert.

Sehen Sie sich Ihr Projekt an, in der .git Ordner für die config Datei und Sie sollten so etwas sehen:

[core]
    filemode = false

Sie können es entweder in ändern true in Ihrem bevorzugten Texteditor oder führen Sie Folgendes aus:

git config core.filemode true

Dann sollten Sie in der Lage sein, Ihre Dateien normal zu übertragen. Es werden nur die Berechtigungsänderungen übernommen.

  • Danke! Wie kann ich nachverfolgen, dass die Berechtigungsänderungen übermittelt wurden github?

    – BreakPhreak

    9. Mai 2012 um 13:01 Uhr

  • Sie können es sehen, wenn Sie eine Datei anzeigen (z. B. auf Rails-Gitignore-Dateifinden Sie 100644 als Dateiberechtigung)

    – Vinzenz B.

    9. Mai 2012 um 13:38 Uhr

  • Berechtigungsänderungen unter Windows mit git vornehmen (tatsächlich die Dateiberechtigungen ändern und festschreiben): blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.html

    – fooMonster

    17. Mai 2013 um 19:08 Uhr


  • Diese Antwort ist falsch! Git verfolgt nur, ob eine Datei ausführbar ist oder nicht. Es verfolgt keine anderen Dateiberechtigungen wie beschreibbar oder lesbar. Weitere Informationen finden Sie unter stackoverflow.com/a/11231682/2311074.

    – Adam

    11. Juli 2017 um 8:22 Uhr

  • Bei mir hat webstorm die Änderung nicht erwischt, aber in git statusich sehe Veränderungen..

    – Stadtsheriff

    17. April 2020 um 11:25 Uhr

Funktioniert nicht für mich.

Der Modus ist wahr, die Dateiberechtigungen wurden geändert, aber git sagt, dass es keine Arbeit zu tun gibt.

git init
git add dir/file
chmod 440 dir/file
git commit -a

Das Problem scheint zu sein, dass Git nur bestimmte Berechtigungsänderungen erkennt.

  • Richtig – git Verfolgt wirklich nur, ob eine Datei ausführbar ist oder nicht, nicht den vollständigen Satz von *nix-Berechtigungen. Sie müssten also eine Datei zwischen ausführbar/nicht umschalten, damit sie denkt, Sie hätten etwas geändert, das es wert ist, festgeschrieben zu werden …

    – Twalberg

    26. Juni 2013 um 19:41 Uhr

  • Ich konnte keine eindeutige Dokumentation finden: Welchen Post-Action-Trigger kann ich vielleicht verwenden, um die Perms entsprechend einzustellen?

    – Otheus

    27. Juni 2013 um 11:49 Uhr

  • Nun, es gibt eine post-checkout einhaken git, was einige Fälle abdecken würde, aber ich bin mir nicht sicher, ob das alle möglichen Dinge abdecken würde, die Dateien in Ihrem Worktree aktualisieren. Vielleicht ist es besser, wenn Sie einfach ein zusätzliches Shell-Skript in Ihrem Repo haben, das die Dinge entsprechend einstellt. Alternativ gibt es ein paar Projekte, die erweitern git um Metadaten zu speichern, aber ich habe nie wirklich irgendwelche davon ausprobiert …

    – Twalberg

    27. Juni 2013 um 14:09 Uhr

  • Ich habe die Dateiberechtigungen auf 777 geändert und getan git update-index --refreshaber der Unterschied zeigt old mode 100644 new mode 100755. Es hat nicht alle Berechtigungen aktualisiert

    – hudac

    20. Juni 2016 um 9:24 Uhr

  • siehe Antwort von @tishma hier stackoverflow.com/questions/14557106/…. Das hat bei mir funktioniert

    – gary69

    7. Juni 2018 um 17:52 Uhr

927880cookie-checkAktualisieren und Festschreiben nur der Berechtigungen einer Datei mithilfe der Git-Versionskontrolle

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy