Git nieoczekiwanie zmienia uprawnienia pojedynczego pliku

Jestem jedyną osobą zaangażowaną w ten projekt git. Za każdym razem, gdy edytuję pliki w moim lokalnym repozytorium Ubuntu, a następnie wciskam do Bitbucket i ściągam do mojego repozytorium produkcyjnego, git zmienia edytowane pliki na -rwxrwxr-x 775. Apache tego nie lubi.

System lokalny: git wersja 1.8.1.2 na Ubuntu Linux

System produkcyjny: git wersja 1.7.12 w systemie CentOS / Red Hat Linux

Gdy naprawię uprawnienia do 755, zrób to

git diff

lub

git diff -p

To nic nie pokazuje.

W moim lokalnym repozytorium uprawnienia to 755, a wszystkie pliki są własnością haws. W moim repozytorium produkcyjnym wszystkie pozostałe uprawnienia pozostają na poziomie 755, a wszystkie pliki, w tym contact.php, są własnością mojej nazwy użytkownika.

Zarówno w repozytorium lokalnym, jak i produkcyjnym zmieniłem core.filemode w następujący sposób, próbując zatrzymać to zachowanie,

core.filemode = false

Miałem takie tajemnice w projektach współpracy, więc naprawdę chciałbym zrozumieć, co się dzieje.

Co mogę zrobić, aby zobaczyć przyczynę zmiany uprawnień tego pliku przez gita?Jak mogę przestać zmieniać git?

Próbowałem też znaleźć rozwiązanie tutaj:Uniemożliwić Gitowi zmianę uprawnień podczas ściągania bezskutecznie.

Moje ostateczne rozwiązanie (dzięki wskazówkom VonC):

Dzięki dobrym wyjaśnieniom VonCa, byłem na tyle odważny, aby dowiedzieć się, że za każdym razem, gdy logowałem się na moim serwerze, moja umask wracała do 0002. Więc stworzyłem skrypt uruchamiania użytkownika (.bashrc lub w moim przypadku .bash_profile) na moim Linux host, który ustawia

umask 0022

lub za pomocą notacji symbolicznej (dla niewielkiej wartości dodanej)

umask u=a,g-w,o-w 

lub

umask u=a,go-w 

(Zezwalaj na wszystkie uprawnienia dla użytkownika, nie zezwalaj na uprawnienia do zapisu dla grupy i innych)

To rozwiązało mój problem.

Wcześniej ustawiłem true w git config core.sharedRepository, ale to nie był mój problem i usunąłem to ustawienie po rozwiązaniu problemu.

questionAnswers(1)

yourAnswerToTheQuestion