1000 Stimmen

Wie entferne ich Dateien mit der Aufschrift "alter Modus 100755 neuer Modus 100644" aus unstaged Änderungen in Git?

Aus irgendeinem Grund, wenn ich zunächst ein Pull aus dem Repository für ein Git-Projekt von mir, habe ich eine Menge Dateien in meiner Arbeitskopie, an denen keine erkennbaren Änderungen vorgenommen wurden, die aber immer wieder in meiner Datenbank auftauchen. unstaged changes Bereich.

Ich verwende Git Gui unter Windows XP, und wenn ich mir die Datei ansehe, um zu sehen, was sich geändert hat, erscheint eine Alles, was ich sehe, ist:

old mode 100755  
new mode 100644  

Weiß jemand, was das bedeutet?

Wie kann ich diese Dateien aus der Liste der unveröffentlichten Änderungen entfernen? (Es ist sehr ärgerlich, 100 Dateien durchgehen zu müssen, nur um die Dateien herauszusuchen, die ich kürzlich bearbeitet habe und übertragen möchte).

0 Stimmen

Für die vollständigen, blutigen Details, was core.filemode ist, siehe meine Antwort hier . Beachten Sie, dass jedes Git-Repository sein eigenes core.filemode Einstellung, die von Git zum Zeitpunkt der Erstellung des Repositorys festgelegt wurde; diese Einstellung ist angeblich die richtige für dieses eine Repository zu sein. Wenn er aus irgendeinem Grund falsch ist, können Sie ihn ändern.

12voto

eballo Punkte 693

Das hat bei mir funktioniert:

git ls-files -m | xargs -L 1 chmod 644

8voto

auspicious99 Punkte 3300

Die akzeptierte Antwort auf den Satz git config core.filemode false funktioniert, aber mit Folgen. Einstellung core.filemode zu false weist Git an, alle Änderungen an ausführbaren Bits im Dateisystem zu ignorieren, so dass es dies nicht als eine Änderung ansieht. Wenn Sie irgendwann in der Zukunft eine ausführbare Bit-Änderung für dieses Repository vornehmen wollen, müssen Sie dies manuell tun, oder Sie setzen core.filemode zurück zur Wahrheit.

Eine weniger folgenschwere Alternative, wenn alle geänderten Dateien den Modus 100755 haben sollen, ist, etwas wie folgt zu tun

chmod 100755 $(git ls-files --modified)

was genau die Änderung des Modus bewirkt, nicht mehr und nicht weniger, ohne zusätzliche Auswirkungen.

(in meinem Fall lag es an einer OneDrive-Synchronisierung mit meinem Dateisystem unter MacOS; indem ich die core.filemode Ich lasse die Möglichkeit offen, dass der Moduswechsel in der Zukunft erneut auftritt; in meinem Fall würde ich gerne wissen, ob er erneut auftritt, und die core.filemode wird es vor mir verbergen, was ich nicht will)

5voto

Michael Weigel Punkte 31

Diese Lösung ändert die Git-Dateiberechtigungen von 100755 auf 100644 und überträgt die Änderungen zurück in das Bitbucket-Remote-Repository.

  1. Werfen Sie einen Blick auf die Dateiberechtigungen Ihres Projektarchivs: git ls-files --stage

  2. Wenn 100755 und Sie 100644 wollen

Führen Sie dann diesen Befehl aus: git ls-files --stage | sed 's/ \t / /g' | cut -d' ' -f4 | xargs git update-index --chmod=-x

  1. Überprüfen Sie nun noch einmal die Dateiberechtigungen Ihres Projektarchivs: git ls-files --stage

  2. Übertragen Sie nun Ihre Änderungen:

Git-Status

git commit -m "Korrekte Dateiberechtigungen wiederhergestellt"

Git-Push

3voto

SuperNova Punkte 20412

Es scheint, als hätten Sie einige Berechtigungen des Verzeichnisses geändert. Ich habe die folgenden Schritte durchgeführt, um sie wiederherzustellen.

$  git diff > backup-diff.txt                ### in case you have some other code changes 

$  git checkout .

3voto

IskandarG Punkte 183

Dies geschieht, wenn Sie eine Datei ziehen und alle Dateien im entfernten Repository ausführbar waren. Wenn Sie sie wieder ausführbar machen, ist alles wieder normal.

chmod +x <yourfile> //For one file
chmod +x folder/* // For files in a folder

Das müssen Sie vielleicht tun:

chmod -x <file> // Removes execute bit

stattdessen für Dateien, die nicht als ausführbar festgelegt wurden und die aufgrund der obigen Operation geändert wurden. Es gibt eine bessere Möglichkeit, dies zu tun, aber dies ist nur eine sehr schnelle und schmutzige Lösung.

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