Mam ten sam problem co OP w tym poście, ale nie rozumiem odpowiedzi oznaczonej jako poprawna (nie widzę, żeby wyjaśniała, jak naprawić sytuację)
Robię to i otrzymuję ten błąd:
$ git update-index --assume-unchanged web.config
fatal: Unable to mark file web.config
Plik JEST dodany do repozytorium
NIE jest w
.git/info/exclude
NIE jest w
.gitignore
(było, ale wyjąłem go, a następnie wymusiłem dodanie pliku web.config za pomocągit add -f web.config
, zatwierdzenie i przekazanie tych zmian do repozytorium)Kiedy robię Git ls-files -o tego NIE ma
Więc co mogę zrobić, aby to naprawić?
git ls-files -o
. Jeśli tak, nie ma go w repozytorium.Odpowiedzi:
Miałem ten sam problem co Ty i wykonałem te same cztery kroki, które wskazałeś powyżej, i miałem te same wyniki. Obejmuje to fakt, że mój plik był wyświetlany podczas wykonywania
git ls-files -o
. Jednak w moim przypadku próbowałem wykonaćgit update-index --assume-unchanged
również na pliku, którego nie było na liście podczas wykonywanials-files -o
, i nadal otrzymywałem ten sam błąd „fatal: Unable to mark file
”.Pomyślałem, że może to błąd i pobrałem najnowszą wersję gita, ale to nie pomogło.
W końcu zdałem sobie sprawę, że w tym poleceniu rozróżniana jest wielkość liter! Obejmuje to pełną ścieżkę i nazwę pliku. Po zaktualizowaniu ścieżki do katalogu tak, aby podana była pełna ścieżka z odpowiednią wielkością liter, polecenie wykonało się poprawnie.
Zwróć uwagę, że dotyczyło to Git dla systemu Windows, więc wyniki mogą się różnić w przypadku innych platform.
źródło
Miałem ten sam problem na komputerze Mac. Rozróżnianie wielkości liter nie stanowiło dla mnie problemu - problem polegał na tym, że musiałem najpierw zresetować git:
Problem:
Rozwiązanie:
źródło
--skip-worktree
). Pozbyłem się lokalnych zmian, uruchamiając,git restore .
ale pomiń nadal dawał błąd. Wreszcie próbowałem usunąć plik. Szokująco, dupek nie powiedział, że nastąpiła zmiana. Więc najwyraźniej coś dziwnego wydarzyło się, odkąd git zdecydowanie to śledził i zdecydowanie to usunąłem i na pewno nie powiedziałem, że to zmiana.W moim przypadku drzewo, które zaznaczałem, było katalogiem, a nie plikiem, jak w twoim przypadku, i brakowało mi ukośnika po jego nazwie.
Niepoprawnie -
Prawidłowo -
Zwróć uwagę na ukośnik (/) na końcu.
źródło
fatal: nie można oznaczyć lokalizacji pliku / el-GR.js
Co możesz zrobić to:
$git update-index --assume-unchanged <file name>
To mi pomogło! :)
źródło
$ git update-index --assume-unchanged ./.idea/vcs.xml fatal: Unable to mark file .idea/vcs.xml
$ cd .idea
git update-index --assume-unchanged .
Pracowałem, dzięki!Upewnij się, że plik został dodany do repozytorium git, jeśli nie, dodaj plik w repozytorium git i spróbuj to zadziała.
źródło
Jeśli twoja ścieżka zawiera spacje, możesz otrzymać ten błąd, nawet jeśli masz poprawną wielkość liter.
Powoduje to błąd „krytyczny”:
Aby to naprawić, po prostu dodaj cudzysłowy wokół ścieżki.
źródło
Mój problem polegał na tym, że wypróbowałem polecenie z symbolem wieloznacznym *, zakładając, że będzie rekurencyjne, ale tak nie było.
Więc co zrobiłem
wykonanie
pracował wtedy dla mnie i nie spowodował PO i mojego problemu.
źródło
Miałem ten problem, gdy próbowałem odblokować pliki * .orig.
Oto, co zrobiłem, aby je wyśledzić:
jeśli to nie zadziała:
źródło
--assume-unchanged
dotyczy wolnych systemów plików, a użytkownicy obiecują, że Git nie musi sprawdzać tego pliku, ponieważ Git może założyć, że jest on niezmieniony. Ale niektóre polecenia nadal sprawdzają i produkują „niespodziankę”!Nie używaj do plików, które się zmieniają.
Przepraszam, że jestem zwiastunem tej wiadomości (mam aktualizację w celu zmiany tej dokumentacji).
źródło
git rm --cached filename
to usunie plik, gdy inni ściągnąW moim przypadku próbowałem użyć dowolnej z powyższych metod, ale bez powodzenia.
Po wielu próbach po prostu pomyślałem, aby dodać plik do indeksowania.
Git odrzucił tę czynność, ale poradził mi, abym zrobił to na siłę.
I to zadziałało dla mnie.
źródło
Upewnij się, że masz zaznaczony plik „web.config”.
Jeśli tak nie jest, zostanie wyświetlony ten komunikat o błędzie.
źródło
Może komuś się przyda. Miałem ten sam problem i nie było problemu ze składnią, bez nazwy ze spacjami, bez problemu ze ścieżką, a polecenie resetowania git nie działało. Przekazywałem polecenie z folderu wewnątrz apache www i usługa apache została zatrzymana. Uruchomiono ponownie usługę apache i błąd zniknął
źródło
Jednym z częstych błędów związanych z używaniem tego polecenia jest próba założenia, że plik nie jest śledzony lub plik został już zignorowany przez git.
Upewnij się najpierw, że plik jest śledzony przez uruchomienie
Jeśli nie wyświetla pliku, musisz go najpierw dodać:
Jeśli to pokazuje twój plik lub już dodałeś ten plik do git, powinieneś być w stanie uruchomić git, zakładając polecenia normalnie:
lub dla folderów
możesz sprawdzić, czy zakłada się, że Twój plik jest ignorowany, uruchamiając
Znak S oznacza pominięte pliki.
źródło
Dla wszystkich przyszłych gości. Żadne z powyższych nie rozwiązało mojego problemu. Zrozumiałem, że
.gitignore
plik musi być umieszczony we właściwym katalogu. W moim przypadku, gdy przeniosłem się.gitignore
do katalogu głównego aplikacji, problem został rozwiązany.źródło
Sprawdź, czy plik, który ma być oznaczony, istnieje i czy pisze poprawnie, zwłaszcza ścieżkę do pliku i separator pliku. Separatory plików systemu Windows i systemu Linux są w różnych kierunkach.
źródło
Zauważyłem, że czasami to nie działa, ponieważ już zapisałeś plik do swojego .gitignore i wykonałeś push lub pull. Musisz tylko wykonać push, a plik powinien być ignorowany przy kolejnych zatwierdzeniach, nawet jeśli lokalnie modyfikujesz plik.
źródło
Miałem ten sam problem z cygwinem w oknach. Podanie pełnej ścieżki do pliku
źródło