Jak usunąć Pliki "stary tryb 100755 nowy tryb 100644" z nieakceptowanych zmian w Git?

Z jakiegoś powodu, kiedy początkowo wykonałem pull z repozytorium dla mojego projektu git, Mam mnóstwo plików w mojej roboczej kopii, które nie mają zauważalnych zmian w nich, ale pojawiają się w moim unstaged changes obszarze.

Używam Git Gui Na Windows xp, i kiedy idę spojrzeć na plik, aby zobaczyć, co się zmieniło. Wszystko co widzę to:

old mode 100755  
new mode 100644  
Czy ktoś wie, co to znaczy?

Jak mogę usunąć te pliki z listy nieakstragowanych zmian? (Bardzo irytujące, że trzeba przejrzyj 100 plików, aby wybrać pliki, które ostatnio edytowałem i chcę zatwierdzić).

 559
Author: Lemmings19, 2009-08-11

7 answers

Wygląda mi to na unixowe tryby uprawnień do plików(755=rwxr-xr-x, 644=rw-r--r--) - stary tryb zawierał znacznik + x (wykonywalny), nowy tryb Nie.

Odpowiedzi w tym numerze msysgit sugerują ustawienie core.filemode do false w celu pozbycia się problemu:

git config core.filemode false
 970
Author: Amber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-12 12:17:45

Ustawienie rdzenia.filemode na false działa. Ale upewnij się, że ustawienia w ~/.gitconfig nie są nadpisywane przez tych w .git / config.

 78
Author: NovelX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-04 07:03:22

Napotkałem ten problem podczas kopiowania git repo z działającymi plikami ze starego dysku twardego kilka razy. Problem wynika z faktu, że właściciel i uprawnienia zmieniły się ze starego dysku/maszyny na nowy. Długi i krótki jest, uruchom następujące polecenia, aby wyprostować rzeczy ( dzięki tej odpowiedzi superuser):

sudo chmod -R -x . # remove the executable bit from all files

Poprzednie polecenie rzeczywiście rozwiąże różnice, które git diff zgłosił, ale anuluje Twoją możliwość wyświetlenia listy katalogi, więc ls ./ nie działa z ls: .: Permission denied. Aby to naprawić:

sudo chmod -R +X . # add the executable bit only for directories

Zła wiadomość jest taka, że jeśli masz jakieś pliki, które chcesz zachować, np. Skrypty .sh, musisz je przywrócić. Można to zrobić za pomocą następującego polecenia dla każdego pliku:

chmod +x ./build.sh # where build.sh is the file you want to make executable again
 7
Author: Scott Willeke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-01 22:47:32

Możesz spróbować git reset --hard HEAD aby zresetować repo do oczekiwanego stanu domyślnego.

 5
Author: Doppelganger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-11 03:38:11

Wygląda na to, że zmieniłeś pewne prawa dostępu do katalogu. Zrobiłem następujące kroki, aby go przywrócić.

$  git diff > backup-diff.txt                ### in case you have some other code changes 

$  git checkout .
 4
Author: Vikram S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-06 10:47:13

Dzieje się tak, gdy wszystkie pliki są wykonywalne w zdalnym repozytorium. Ponowne ich wykonanie przywróci wszystko do normy.

chmod +x <yourfile> //For one file
chmod +x folder/* // For files in a folder

Możesz potrzebować:

chmod -x <file> // Removes execute bit

Zamiast tego, dla plików, które nie zostały ustawione jako wykonywalne i które zostały zmienione z powodu powyższej operacji. Jest lepszy sposób, aby to zrobić, ale jest to po prostu bardzo szybka i brudna poprawka.

 1
Author: IskandarG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-10 13:10:22

Miałem tylko jeden kłopotliwy plik ze zmienionymi uprawnieniami. Aby przywrócić go pojedynczo, po prostu usunąłem go ręcznie za pomocą rm <file>, a następnie wykonałem zamówienie, aby pobrać świeżą kopię.

Na szczęście jeszcze go nie wystawiłem.

If I had I could have run git reset -- <file> before running git checkout -- <file>

 0
Author: kEnobus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-21 21:30:51