2013-03-28 10 views
12

Qui è il mio dialogo sistema:file Git modificati dopo la partenza, il reset --hard, ecc anche se autocrlf è impostata su false

unrollme-dev-dan:views Dan$ git reset --hard HEAD 
HEAD is now at 3f225e9 Fix scan titles 
unrollme-dev-dan:views Dan$ git status 
# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: app/signup/finish.html 
# modified: app/signup/scan.html 
# 

devo autocrlf insieme a false:

unrollme-dev-dan:unroll-website Dan$ git config core.autocrlf 
unrollme-dev-dan:unroll-website Dan$ 
unrollme-dev-dan:unroll-website Dan$ git config --global core.autocrlf 
unrollme-dev-dan:unroll-website Dan$ 

E non ho alcun file .gitattributes rovinare questo in su:

unrollme-dev-dan:unroll-website Dan$ find . -name .gitattributes 
[ only results are in different directory tree ] 

Questo è causato da un livello .gitattributes come indicato nella risposta di seguito.

Quando faccio un od -c sui file mostra \r\n. Non so che cosa "dovrebbero" essere, presumibilmente, dovrebbero finire in \n ed è per questo che il diff sta mostrando. Ma quello che non capisco è come questi file potrebbero eventualmente essere modificati al checkout anche con autocrlf false.

Cosa può causare git che modifica un file al checkout oltre a autocrlf?

+0

Is core.eol set? – Ikke

+0

core.eol non è impostato. – djechlin

+0

Può essere un duplicato di [questa domanda] (http: // stackoverflow.it/questions/11005688/git-autocrlf-false-git-status-still-shows-modifications), non votando per chiudere finché uno di questi ha una risposta corretta che funzioni per entrambi. – djechlin

risposta

15

Questo problema può essere causato da un'opzione testo gitattributes' https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html

Questo problema può essere risolto modificando temporaneamente il file .gitattributes all'interno della cartella di progetto.

modificare * text=auto a #* text=auto apportare le modifiche necessarie alle terminazioni di riga dei file e inviare il commit. È quindi possibile abilitarlo nuovamente dopo aver apportato la modifica, o in alternativa selezionare una delle altre opzioni che potrebbero adattarsi meglio al proprio progetto.

+0

Naturalmente, se tu Stai lavorando allo stesso repository git che puoi notare che in realtà * era * un file .gitattributes, ma non uno trovato nella mia ricerca ... – djechlin

+0

Grazie! Il mio caso era leggermente diverso: un file .jar improvvisamente mostrato come modificato dopo aver aggiunto .gitattributes. Ho aggiunto una riga con: * .jar binary – savedario

3

Non avevo un file gitattributes come menzionato nella risposta accettata, era un problema di permessi per i file nel mio caso. Per vedere se questo è il vostro problema verificare differenze i file modificati con git diff, per es .:

git diff path/to/file.html 

Se l'unico cambiamento che si vede è vecchio nuova modalità/modalità, è probabile un problema di autorizzazioni. Si può dire git per ignorare le modifiche alle autorizzazioni file usando:

git config core.filemode false 

o

git config --global core.filemode false 

(a seconda di come si usa git).

Recentemente ho passato dall'uso di git Cygwin a git per Windows per motivi di prestazioni, inoltre, in modo che TortoiseGit funzioni correttamente, questo potrebbe essere il motivo per cui le autorizzazioni sono state eliminate nel mio caso.

Riferimenti:

  1. How do I remove files saying "old mode 100755 new mode 100644" from unstaged changes in Git?
+0

Grazie per 'core.filemode', che ha risolto i miei problemi su Windows. – niahoo

Problemi correlati