2016-01-25 11 views

risposta

4

Stai usando Atom editor di testo sotto Windows?
Il ritorno a capo di Windows è \r\n mentre è \n in Unix.
^M (0xD o \r) è il carattere di ritorno a capo in Windows.
Penso che quel file sia stato precedentemente salvato sotto Unix (e che abbia già \n su ogni riga), quindi Atom aggiunge \r come richiesto da Windows.

Per ulteriori informazioni è possibile vedere this e this

+5

Atom mostreranno quale linea finale che sta usando in basso a destra della barra di stato. Vedi il plugin [documentazione] (https://github.com/atom/line-ending-selector). Modificandolo qui verrà modificata la fine della linea per quel file. In "Impostazioni> Pacchetti> line-ending-selector' puoi anche impostare la fine della riga predefinita per i nuovi file. –

+0

@roman, ho sempre usato mac. –

+0

Dal commento di @ @ DavidUlrich, ho scavato abit nel pacchetto. Dall'esercizio sopra, ho scoperto che i file nel repository su cui stavo lavorando erano tutti CRLF. Ho concluso che dal momento che il progetto è stato precedentemente svolto da un altro sviluppatore, molto probabilmente, lo benedica, stava usando Windows. –

1

maggior parte delle soluzioni che ho trovato on-line comporta usando sed, VI, o emacs. Ho trovato una soluzione che funziona direttamente all'interno di Atom (e probabilmente con qualsiasi editor di testo), nessuna riga di comando necessaria.

Selezionare tutti i ritorni o ottenere un selettore all'inizio di ogni riga, quindi eliminare e premere Invio. Potrebbe volerci un secondo, ma si sbarazzerà di tutti i caratteri^M.

Questo probabilmente rovinerà il rientro, ma è possibile il rientro automatico. Questo potrebbe non essere efficiente se hai più file con cui devi farlo, ma è una soluzione rapida e sporca per un solo file.

12

Sono su Ubuntu Linux e ho notato il^M (ritorno a capo, avanzamento riga) durante git diff.

In qualche modo CRLF è stato selezionato nella parte inferiore della barra di stato:

CRLF in Atom status bar

ho semplicemente cliccato e cambiato a LF:

LF in Atom Status Bar

Sembra essere impostato su un file per file quindi sarà necessario modificare per ogni file problematico.


Nel mio caso in qualche modo tutte le terminazioni linea era stata modificata in modo git diff era un mare di rosso. Ho usato il seguente per identificare i cambiamenti 'reale':

git diff --ignore-space-at-eol 

Tuttavia, git commit sarebbe ancora seppellire la 'vera' cambiamenti nel commettere storia così ho:

  1. corse git stash save
  2. terminazioni riga modificata in atomo
  3. corse git commit -am "fix line endings"
  4. corse git stash apply

Ora le terminazioni di linea sono scomparse e il commit può essere effettuato su un diff preciso.

+0

O uomo! hai fatto un giorno. Non so perché cambi in CRLF ma comunque. grazie per questo. – ngelx

3

Controlla la parte inferiore dell'editor che potrebbe aver modificato le terminazioni della linea di file.

Di solito è LF per Unix

enter image description here

e CRLF per le finestre

enter image description here

Problemi correlati