2017-02-10 3 views
0

Ich versuche, ein Skript zu schreiben, um einige Dateien mit git wöchentlich zu sichern.
Die Struktur mein Skript ist wie folgt:Git/stash Behandlung unveränderte Dateien als komplett neu

  1. cd in das lokale Verzeichnis, in dem Änderungen vorgenommen werden gehen zu
  2. Kasse der Filiale
  3. ein Skript ausführen, den gesamten Ordner mit den aktuellen Dateien zu überschreiben
  4. git add --all
  5. git push

Hier ist das Problem: Wenn ich das überschreiben, sollten die meisten Dateien identisch sein. Daher, nachdem ich sie zur Fernbedienung geschoben habe, sollten sie nicht als verändert markiert werden.

Wenn ich jedoch drücke, werden alle Dateien, die sich nicht geändert haben (also mit identischen Kopien überschrieben wurden), als komplett neu betrachtet, wenn ich sie im Versteckspeicher anschaue.

Hat jemand schon einmal auf ein Problem wie dieses/wissen, was könnte es verursachen?

+0

Alles, was Sie tun müssen, ist Diff Dateien zu verstehen, was los ist. – jbu

Antwort

0

Die beiden möglichen Ursachen sind:

  • unterschiedliche Erlaubnis (644 oder 755)
  • verschiedenen EOL (Ende der Zeile): Überprüfen Sie die diff auf eine geänderte Datei mit:

    git -c color.diff.whitespace="red reverse" diff -R -- afile 
    

Check also für jede text=auto-Direktive in einer .gitattributes Datei

Stellen Sie sicher, dass git config --global core.autocrlf auf false eingestellt ist (und Sie keine lokalen git config autoocrlf in Ihrem Repo haben).
Für die Dateierlaubnis kann git config --global core.filemode false helfen.

Dann versuchen Sie erneut die Checkout/Override/Add/Commit und Push-Sequenz.

Verwandte Themen