2009-07-30 7 views
4

Mes collègues et moi avons de la difficulté à obtenir git de se comporter correctement avec certains fichiers sur nos clones de reposoires Windows. Les clones ont été créés en clonant un dépôt qui provient d'une machine OSX. Nous avons défini autocrlf sur true, mais le problème est que nous trouvons régulièrement les fichiers que git pense être modifiés même si nous ne les touchons jamais (nous ne les ouvrons même pas dans un éditeur)Traiter des fichiers que Git refuse de réinitialiser?

La sortie suivante illustre le problème: des idées où je me trompe?

$ git status                         
# On branch master                       
# Your branch is behind 'origin/master' by 27 commits, and can be fast-forwarded.        
#                            
# Changed but not updated:                     
# (use "git add <file>..." to update what will be committed)            
# (use "git checkout -- <file>..." to discard changes in working directory)         
#                            
#  modified: Web Applications/webclient/language/en/lang_copyitems.ini         
#                            
no changes added to commit (use "git add" and/or "git commit -a")            

[email protected] ~/Documents/Workspace/prestige.git             
$ git diff "Web Applications/webclient/language/en/lang_copyitems.ini"          
diff --git a/Web Applications/webclient/language/en/lang_copyitems.ini b/Web Applications/webclient/language/ 
index 800c188..ed11c0e 100644                     
--- a/Web Applications/webclient/language/en/lang_copyitems.ini            
+++ b/Web Applications/webclient/language/en/lang_copyitems.ini            
@@ -1,12 +1,12 @@                        
-<EF><BB><BF> [Header]                      
-  Description=Language strings for 'copyitems.php'              
-                            
-  [Messages]                       
-  300=Copy                        
-  301=Close                        
-  302=COPY STORIES                      
-  303=Name                        
-  304=In Queue                       
-  305=New Name                       
-  306=Items to Copy                      
-  308=This item has mandatory metadata fields that are not correctly set. Click any part of this messag 
+<EF><BB><BF> [Header]                      
+  Description=Language strings for 'copyitems.php'              
+                            
+  [Messages]                       
+  300=Copy                        
+  301=Close                        
+  302=COPY STORIES                      
+  303=Name                        
+  304=In Queue                       
+  305=New Name                       
+  306=Items to Copy                      
+  308=This item has mandatory metadata fields that are not correctly set. Click any part of this messag 

[email protected] ~/Documents/Workspace/prestige.git             
$ git checkout HEAD "Web Applications/webclient/language/en/lang_copyitems.ini"        

[email protected] ~/Documents/Workspace/prestige.git             
$ git status                         
# On branch master                       
# Your branch is behind 'origin/master' by 27 commits, and can be fast-forwarded.        
#                            
# Changed but not updated:                     
# (use "git add <file>..." to update what will be committed)            
# (use "git checkout -- <file>..." to discard changes in working directory)         
#                            
#  modified: Web Applications/webclient/language/en/lang_copyitems.ini         
# 

Répondre

6

le problème avec ces paramètres, comme le montre le GitHub guide est une conversion automatique est effectuée lors de la caisse du dépôt ...

Cela signifie que vous ne pas besoin d'ouvrir une fi le pour déclencher tout changement.

Est-il impossible de garder autocrlf à false et d'ouvrir ces fichiers Windows dans des éditeurs capables de respecter les caractères de ligne de retour?

Note (illustrated here), si vous avez besoin de la conversion, à l'exception de certains fichiers, vous pouvez ajouter un .gitattributes dans le répertoire parent, avec:

myFile -crlf 

Dans le fichier que vous définissez les attributs sur un chemin (ou un motif), ou les désactiver (avec le signe moins). L'attribut crlf est l'attribut qui indique si un fichier est affecté par les options core.autocrlf. Si vous ne le faites pas, Git ne jouera pas avec les fins de ligne dans le fichier

+0

Excellent lien que vous avez publié depuis Github. La solution est donc de valider ces fichiers une fois de plus et tout ira bien à partir de là. Merci pour les pointeurs. – jkp

1

Pour résoudre ce problème sur mon ordinateur Windows 7 en utilisant git 1.7.3.1, j'ai dû définir l'option core.filemode sur false.

git config -e --local 
+0

Merci pour ça. Après avoir déconner avec des drapeaux de fin de ligne pour les âges. Changer core.filemode dans .git/config a bien fonctionné. – griffin2000