2013-05-25 15 views
10

Próbuję wyświetlić zmiany dla pojedynczego pliku, który nie jest rejestrowany.Co to znaczy, gdy Git diff pokazuje zmiany trybu?

pierwszy używam git status aby wyświetlić wszystkie Unstaged zmiany
Wtedy na przykład:

git diff AndroidManifest.xml 

Ale mam to wyjście

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

Co to znaczy i jak można zobaczyć zmiany dla specyficznych plik

Odpowiedz

10

Najprawdopodobniej zawartość tego pliku nie uległa zmianie, tylko bit wykonywalny został wyczyszczony. Spróbuj zmienić plik, powiedzmy, dodając do niego pusty wiersz i zobacz, co daje git diff.

Oprócz zawartości plików, Git zapisuje także stan wykonywanego bitu dla każdego pliku. Ma sens w systemach Linux, jeśli chcesz, aby skrypty były wykonywalne zaraz po kasie. Patrz także następujące dwa pytania związane z:

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

Tak, masz rację, dokonałem zmiany w pliku i teraz pokazuje różnicę. Dzięki – pedja

+0

Link do http://gitfilemodeisannoying.com/ jest teraz uszkodzony – Polygnome

8

Oznacza to, że tryb plik zmienił się z 755 do 644, ale zawartość nie zostały zmienione.

git diff jest dokładnie tym, czego szukasz - pokazuje zmiany z nieskatalogowanych plików do ostatniego zatwierdzenia. git diff --cached jest dla plików etapowych.

+0

Interesujące! to ma wiele sensu. – KhaledMohamedP

+1

Czy mogę uniknąć zmiany trybu plików? – ManuelSchneid3r

+1

@ ManuelSchneid3r Jasne, oczywiście. Git nie zmienia trybu pliku, tylko śledzi zmianę trybu. Albo po prostu zmień go z powrotem do oryginalnego trybu, albo nie zmieniaj go w pierwszej kolejności. – Polygnome