2017-02-10 2 views
0

J'essaye d'écrire un script pour sauvegarder des fichiers sur une base hebdomadaire avec git.
La structure de mon script est la suivante:Git/Stash traitant des fichiers de changements comme complètement nouveau

  1. cd dans le répertoire local où les changements vont être faits
  2. votre commande la branche
  3. exécuter un script pour remplacer le dossier complet avec les fichiers en cours
  4. git add --all
  5. git push

Voici le problème: quand je fais l'écrasement, la plupart des fichiers doivent être identiques. Par conséquent, une fois que je les ai poussés vers la télécommande, ils ne devraient pas être marqués comme modifiés de quelque façon que ce soit.

Cependant, lorsque je le pousse, tous les fichiers qui n'ont pas été modifiés (et qui ont donc été remplacés par des copies identiques) sont traités comme complètement nouveaux lorsque je les vois dans une cachette.

Est-ce que quelqu'un a déjà rencontré un problème comme celui-ci avant/sait ce qui pourrait l'être?

+0

Tout ce que vous devez faire est diff les fichiers pour comprendre ce qui se passe. – jbu

Répondre

0

Les deux causes possibles sont les suivantes:

  • autorisation différente (644 ou 755)
  • différents EOL (fin de ligne): vérifiez la diff sur un fichier modifié avec:

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

Check also pour toute directive text=auto dans un fichier .gitattributes

Assurez-vous que git config --global core.autocrlf est défini sur false (et que vous n'avez aucun git config autoocrlf local dans votre repo). Pour l'autorisation de fichier, git config --global core.filemode false peut aider.

Ensuite, essayez à nouveau la commande checkout/override/add/commit et push.