2012-10-13 13 views
23

Ho un sito Web che ha un repository git. Ho clonato il repository in modo che potessi sviluppare in una directory e poi passare al repository e quindi inserire la directory live/prod (sarebbe interessante trovare suggerimenti per un modo migliore di farlo se ce n'è uno, ma questo è al di fuori portata di questa domanda).diff restituisce l'intero file per file identici

ho fatto quanto segue nella directory in diretta di spingere tutti i miei ultimi cambiamenti:

git add . 
git commit -a // added a message 
git push 

Ho poi fatto il seguente nella directory dev:

git clone [email protected]:user/repo.git 

Poi ho aperto due file, prod /root/test.php e dev/root/test.php, e sembravano identici. Tuttavia, quando ho fatto il seguente comando diff, è emesso l'intero file:

diff prod/root/test.php dev/root/test.php 

Io sono così confusa sul motivo per cui diff sarebbe uscita l'intero file se sono identici ... Ho anche provato googling questo e non riesco a trovare nessun altro con questo problema. Forse si tratta di un problema di terminazioni di linea o di un problema di codifica dei caratteri in cui sembrano uguali ma in realtà sono diversi e git/bitbucket lo converte quando si preme al loro repo? Questa è l'unica cosa che riesco a pensare ... O quello o mi manca qualcosa di veramente ovvio.

ecco l'output:

1,3c1,3 
< <? 
< echo '<p>Hello world!</p>'; 
< ?> 
--- 
> <? 
> echo '<p>Hello world!</p>'; 
> ?> 

risposta

27

Questo sembra un problema di spazio bianco, per evitarli in futuro, è possibile impostare Git per normalizzarli.

Windows e sistema UNIX non utilizzano lo stesso di fine riga, per evitare conflitti accada in base a questi, si dovrebbe setup git config in questo modo:

  • di Windows: git config --global core.autocrlf true
  • Unix: git config --global core.autocrlf input

Avanti, per assicurarsi che ci impegniamo solo con le regole di spaziatura ideale, è possibile impostare questo config opti on:

git config --global core.whitespace trailing-space,space-before-tab,indent-with-non-tab 
2

Che di solito significa la fine riga sono diversi. I programmi più diffusi ti consentono di ignorare le differenze nelle terminazioni di riga. Il tuo ti permette di farlo?

12

Molto probabilmente è la terminazione della linea. Prova a git diff --ignore-space-at-eol. E per semplice (non git) diff è diff -b.