2013-05-25 12 views
10

Sto provando a visualizzare le modifiche per singolo file che non è stato disattivato.Cosa significa quando Git diff mostra le modifiche alla modalità?

prima ho utilizzare git status per visualizzare tutte le modifiche unstaged
poi per esempio:

git diff AndroidManifest.xml 

ma ottengo questo output

diff --git a/AndroidManifest.xml b/AndroidManifest.xml 
old mode 100755 
new mode 100644 

Che cosa vuol dire e come posso visualizzare le modifiche per specifiche file

risposta

10

Molto probabilmente, il contenuto di questo file non è stato modificato, solo il bit eseguibile è stato cancellato. Prova effettivamente a cambiare il file aggiungendo, ad esempio, una riga vuota e guarda le uscite git diff.

Oltre ai contenuti del file, Git registra anche lo stato del bit eseguibile per ogni file. Ha senso sui sistemi Linux se vuoi che gli script siano eseguibili subito dopo il checkout. Vedere anche i seguenti due questioni correlate:

How do I make Git ignore file mode (chmod) changes?

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

+0

Sì, hai ragione, ho apportato una modifica al file e ora mostra la differenza. Grazie – pedja

+0

Il link a http://gitfilemodeisannoying.com/ è ora rotto – Polygnome

8

Ciò significa che la modalità di file modificato 755-644, ma il contenuto non è stato alterato.

git diff è esattamente quello che stai cercando: mostra i cambiamenti dai file non modificati all'ultimo commit. git diff --cached è per file staged.

+0

Interessante! questo ha molto senso – KhaledMohamedP

+1

Posso evitare questa modifica alla modalità file? – ManuelSchneid3r

+1

@ ManuelSchneid3r Certo, certo. Git non cambia la modalità file, tiene traccia solo del fatto che il cambio di modalità è avvenuto. O semplicemente cambialo di nuovo alla sua modalità originale o non cambiarlo in primo luogo. – Polygnome

Problemi correlati