2013-06-07 13 views
37

Próbuję przesłać moje pliki do github używając bash. Są już tam, a ja przesyłając nowszą wersję z nowych linii i kodu itp Ale gdy próbuję git add a następnie git status mówi:Dlaczego git nie rozpoznaje, że mój plik został zmieniony, dlatego git add nie działa

Na gałęzi master

nic popełnić, pracując katalog czysty

Plik, którego używam został właśnie zmodyfikowany.

+4

jeśli już popełniłeś, to nie będziesz miał nic do zatwierdzenia, sprawdź dziennik git. –

+2

jaki jest wynik działania git diff? – maazza

+0

@maazza Nie otrzymuję niczego z git diff – somerandomguy

Odpowiedz

5

dobrze nie mamy wystarczająco dużo, aby odpowiedzieć na to pytanie, więc dam wam kilka domysły:

1) schował swoje zmiany, aby ustalić typ: git stash pop

2) trzeba było zmian i je popełnił, powinieneś być w stanie zobaczyć swoje popełnić w git log

3) trzeba było zmiany zrobił jakiś git reset --hard lub inny, zmiany mogą być tam w reflog typu git reflog --all następuje sprawdzanie czy cherry-picking ref, jeśli kiedykolwiek go znajdziesz.

4) kilka razy sprawdziłeś to samo powtórne zgłoszenie i jesteś w złym.

+0

1) nie znaleziono stash 2) Miałem zmiany i popełnione, więc czy mogę ponownie popełnić? 3) Nie zrobiłem tego 4) Jestem w odpowiednim repozytorium – somerandomguy

+0

jeśli miałeś zmiany i je popełniłeś, to jesteś dobry, idź do następnego kroku, push lub jakikolwiek jest twój przepływ pracy ... Możesz dokonać ponownego zaangażowania, jeśli Mają więcej zmian, możesz nawet "git commit --amend", który wprowadzi twoje nowe zmiany do ostatniego zatwierdzenia, nie rób tego, jeśli już podzieliłeś się swoim commitem. –

4

Miałem takie fajne rzeczy. Wtyczka gify Eclipse Kepler automatycznie oznaczała wszystkie moje foldery projektu jako ignorowane w folderze .gitignore.

Kiedy dostanę się do commit z menu , wszystkie zostaną ponownie zignorowane. O ile mogę powiedzieć, było tak dlatego, że ustawiłem je tak, jak wyprowadzono je w projekcie nadrzędnym. Odznaczenie ich jako dervied rozwiązało to. Nigdy wcześniej tego nie widziałem w Indigo. Mam nadzieję, że to pomoże.

49

Miałem problem, w którym dawno temu ustawiłem indeks git na "zakładam niezmieniony" w moim pliku.

Można powiedzieć git aby zatrzymać ignorowanie zmian w pliku z:

git update-index --no-assume-unchanged path/to/file 

Jeśli to nie pomóc zresetować może wystarczyć dla innych dziwnych przypadkach.


W praktyce znalazłem usunięcie pamięci podręcznej plik i zresetowanie go do pracy:

git rm --cached path/to/file 
git reset path/to/file 

git rm --cached znaczy tylko usunąć plik z indeksem i reset mówi git aby odświeżyć indeks git z ostatnie zatwierdzenie.

+0

'git add -f path/to/the/file' to na siłę doda pliki do zatwierdzenia. – San

+0

Ta odpowiedź była jedyną, która pomogła mi rozwiązać mój problem. Nie jestem pewien, czy to jest Windows (miałem ** nigdy ** nie miał żadnych problemów w przeszłości, albo w osx lub Linux). Tak więc dzięki @ThorSummoner. Przy okazji wypróbowałem 'git add -f' plik, który był w tym stanie" załóż niezmieniony "i nie ** działał ** - musiał albo" git update-index', albo "git rm --cached" przez "reset git", aby działał. – rsenna

+0

Jeśli nie masz pewności co do aktualnego stanu repo, wykonaj następujące czynności: 'git rm --cached -r .', a następnie' git reset. '. – rsenna

0

Jaki rodzaj pliku próbowałeś załadować? Teraz spędzam prawie godzinę, aby przesłać moją modyfikację css. Ale to css skompilowane z pliku stylu, więc git po prostu go zignorował. Kiedy zmieniłem źródło stylów, wszystko działało.

Mam nadzieję, że to pomaga.

5

Jeszcze jeden możliwy powód (który okazał się prawdziwy w moim obecnym przypadku).Sprawdź swój plik .gitignore. Może się okazać, że plik lub rozszerzenie pliku, z którym próbujesz pracować, znajduje się pod numerem .gitignore, co wyjaśnia, dlaczego nie jest rozpoznawany jako zmieniony plik.

+0

Dodaj więcej wyjaśnień; to pomoże innym. –

+0

Użyłem [gitignore.io] (http://gitignore.io) do wygenerowania pliku .gitignore i znalazłem wiersz z 'lib /', co powoduje, że git ignoruje ten folder. Nie ma z tym problemu - przynajmniej jeśli ten folder nie jest głównym folderem z twojego projektu, jak to, co mi się przydarzyło. – Paladini

+0

Dla każdego w moim przypadku był to mój globalny plik exclude – vpzomtrrfrt

0

Miałem ten problem. Mój nie działał, ponieważ umieszczałem moje pliki w folderze .git wewnątrz mojego projektu.

0

Na ogół z tym problemem, najpierw sprawdź, czy edytujesz plik, który Twoim zdaniem jest! Miałem ten problem podczas edytowania transpiled pliku JavaScript zamiast pliku źródłowego (wersja transpiled nie była pod kontrolą źródła).

0

Mój klient Git (Gitg) spowodował ten problem dla mnie. Normalne polecenia, które zwykle uruchamiałem, nie działały. Nawet dotykanie każdego pliku w projekcie nie działa.

Znalazłem sposób, aby to naprawić i nadal nie jestem pewien, co spowodowało. Skopiuj swój katalog projektu. Brakujące pliki pojawią się w skopiowanym katalogu git status. Zmiana nazwy może zrobić to samo.

-3

spróbuje użyć git add * następnie git commit

+0

Witaj w SO! To prawdopodobnie nie odpowiada na pytanie, a istnieje już 9 odpowiedzi tutaj. Proszę, zmień swoje wysiłki na pytania, które wymagają odpowiedzi! –

0

TL; DR; Czy jesteś nawet na właściwym repozytorium?

Moja opowieść jest trochę zabawna, ale pomyślałem, że może się zdarzyć z kimś, kto może mieć podobny scenariusz, więc udostępniam go tutaj.

Właściwie na moim komputerze miałem dwa osobne repozytoria git: repo1 i repo2 skonfigurowane w tym samym katalogu głównym o nazwie source. Te dwa repozytoria są zasadniczo repozytoriami dwóch produktów, które pracuję w mojej firmie. Teraz chodzi o to, że jako standardowa wytyczna, struktura katalogów kodu źródłowego wszystkich produktów jest dokładnie taka sama w mojej firmie.

Więc nie zdając sobie sprawy, zmieniłem dokładnie ten sam nazwany plik w repo2, który miałem zmienić w repo1. Tak, ja po prostu przechowywane polecenie git status działa na repo1 i przechowywane dając tym samym komunikacie

na gałęzi master

niczego dokonać, katalog czyste

pracuje na pół godziny. Wtedy mój kolega zauważył to jako niezależną parę oczu i zwrócił mi uwagę, że znajdowałem się w złym, ale bardzo podobnym repozytorium. W momencie, kiedy przełączyłem się na repo1 Git zaczął zauważać zmienione pliki.

Nie tak często. Ale nigdy nie wiesz!

Powiązane problemy