Z jakiegoś powodu, kiedy początkowo ściągałem z repozytorium mojego projektu git, dostałem mnóstwo plików w mojej kopii roboczej, które nie zawierają widocznych zmian, ale wciąż pojawiają się w mojej unstaged changes
okolicy.
Używam Git Gui na Windows XP i kiedy idę do pliku, aby zobaczyć, co się zmieniło. Widzę tylko:
old mode 100755
new mode 100644
Czy ktokolwiek wie, co to znaczy?
Jak mogę usunąć te pliki z mojej listy nieustawionych zmian? (Bardzo denerwujące jest to, że muszę przejrzeć setki plików, aby wybrać pliki, które ostatnio edytowałem i chcę zatwierdzić).
git update-index --chmod=(+|-)x <path>
.git config --global ...
można ustawić opcję w globalnym pliku konfiguracyjnym.Ustawienie wartości
core.filemode
false działa, ale upewnij się, że ustawienia~/.gitconfig
nie są nadpisywane przez osoby w nim ustawione.git/config
.źródło
~/.gitconfig
pliku!git config --list --show-origin | sls filemode
lub w systemie Linuxgit config --list --show-origin | grep filemode
. To pokaże, gdzie należy wprowadzić zmiany.Ten problem napotkałem kilka razy podczas kopiowania repozytorium git z działającymi plikami ze starego dysku twardego. Problem wynika z faktu, że właściciel i uprawnienia zmieniły się ze starego dysku / komputera na nowy. Krótko mówiąc, uruchom następujące polecenia, aby wyprostować sytuację ( dzięki tej odpowiedzi administratora ):
Poprzednie polecenie faktycznie rozwiązuje różnice zgłaszane przez git diff, ale odwoła twoją zdolność do wyświetlania katalogów, więc
ls ./
nie powiedzie sięls: .: Permission denied
. Aby to naprawić:Zła wiadomość jest taka, że jeśli masz jakieś pliki, które chcesz zachować, takie jak
.sh
skrypty, musisz je przywrócić. Możesz to zrobić za pomocą następującego polecenia dla każdego pliku:źródło
git config core.filemode
jest ustawiona natrue
, w przeciwnym razie zmiany uprawnień nie zostaną wykryte. Musiałem także odświeżyć indeks git po każdej zmianie, aby go pobrać.Zwykle dzieje się to, gdy repo jest klonowane między komputerami z systemem Windows i Linux / Unix.
Po prostu powiedz gitowi, aby zignorował zmianę trybu pliku, oto kilka sposobów:
Konfiguracja TYLKO dla bieżącego repo:
Konfiguracja globalna:
Dodaj ~ / .gitconfig:
Po prostu wybierz jeden z nich.
źródło
Wygląda na to, że zmieniłeś niektóre uprawnienia do katalogu. Wykonałem następujące kroki, aby go przywrócić.
źródło
Możesz spróbować git reset --hard HEAD, aby zresetować repo do oczekiwanego stanu domyślnego.
źródło
git reset --hard HEAD
działało dla mnie idealnie. dziękiNapotkałem ten sam problem. I to uratuje mi życie: https://gist.github.com/jtdp/5443498
źródło
Dzieje się tak, gdy wyciągasz i wszystkie pliki były wykonywalne w zdalnym repozytorium. Ponowne uruchomienie ich spowoduje, że wszystko wróci do normy.
Może być konieczne wykonanie:
zamiast tego, dla plików, które nie zostały ustawione jako pliki wykonywalne i zostały zmienione z powodu powyższej operacji. Jest lepszy sposób, aby to zrobić, ale jest to bardzo szybka i brudna poprawka.
źródło
Możesz użyć następującego polecenia, aby ponownie zmienić tryb pliku.
git add --chmod=+x -- filename
Następnie przekaż do oddziału.źródło
Miałem tylko jeden kłopotliwy plik ze zmienionymi uprawnieniami. Aby przywrócić go indywidualnie, po prostu usunąłem go ręcznie za pomocą,
rm <file>
a następnie zrobiłem kasę, aby pobrać nową kopię.Na szczęście jeszcze go nie wystawiłem.
Gdybym miał, mógłbym biec
git reset -- <file>
przed bieganiemgit checkout -- <file>
źródło
Właśnie natknąłem się na ten problem, gdy różnicowałem gałąź z mistrzem. Git zwrócił jeden błąd „trybu”, gdy spodziewałem się, że moja gałąź będzie identyczna z master. Naprawiłem to, usuwając plik, a następnie ponownie scalając wzorzec.
Najpierw uruchomiłem diff:
To zwróciło:
Następnie wykonałem następujące czynności, aby naprawić:
Po tym
git diff
nie zwrócił żadnych różnic między gałęzią my i master.źródło