2013-06-20 8 views
59

Va bene, così ho aggiunto il file .gitattributes con linee come questoCome faccio a forzare git a controllare il ramo master e rimuovere i ritorni a capo dopo aver normalizzato i file usando l'attributo "testo"?

*.css text 
*.js text 
etc... 

Ho poi seguito le istruzioni alla http://git-scm.com/docs/gitattributes#_checking-out_and_checking-in

$ rm .git/index  # Remove the index to force Git to 
$ git reset   # re-scan the working directory 
$ git status  # Show files that will be normalized 
$ git add -u 
$ git add .gitattributes 
$ git commit -m "Introduce end-of-line normalization" 

Ma ora il mio copia di lavoro ha ancora i ritorni a capo! Ho dei file non tracciati che vorrei conservare. Come faccio a git checkout il ramo master di nuovo con i file normalizzati?

So che i file sono normalizzati nel repository perché quando clonato il repository, ho tutti i file senza i ritorni a capo.

risposta

163

Ahah! Esegui il checkout precedente, quindi controlla il master.

git checkout HEAD^ 
git checkout -f master 
+3

Grazie per questa soluzione, ma è un problema evidente in git che "checkout -f" non impone realmente il check-out. Un'altra soluzione sarebbe quella di rimuovere tutti i file di copia di lavoro prima (ad esempio tutto tranne .git dir). – pfalcon

+0

Ah, sì, grazie per quello! Sentendo questo, immagino che potremmo semplicemente rimuovere i file di interesse ed eseguire il pagamento. Per me c'era in realtà solo un file che stavo cercando di correggere. Ma ovviamente possono essere tutti i file, centinaia o migliaia. – Jason

+0

Questo errore su git 1.8.3 (mac) con: errore: pathspec 'HEAD ^' non corrisponde a nessun file noto per git. – dval

9

Come altri hanno sottolineato, è possibile solo eliminare tutti i file nel repository e quindi controllarli. Io preferisco questo metodo e può essere fatto con il codice qui sotto

git ls-files -z | xargs -0 rm 
git checkout -- . 

o una linea

git ls-files -z | xargs -0 rm ; git checkout -- . 

Io lo uso per tutto il tempo e non ho ancora trovato nessun giù i lati!

Per ulteriori spiegazioni, il -z aggiunge un carattere nullo sull'estremità di ogni uscita ingresso di ls-files, e il -0 dice xargs per delimitare l'output stava ricevendo da tali caratteri null.

Problemi correlati