Zrobiłem coś git commit -m "message"
takiego:
> git commit -m "save arezzo files"
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: arezzo.txt
# modified: arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")
Ale potem, kiedy to robię git status
, pokazuje te same zmodyfikowane pliki:
> git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: arezzo.txt
# modified: arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")
Co ja robię źle?
git
version-control
git-commit
arezzo
źródło
źródło
git commit -am "save arezzo files"
do automatycznego dodawania wszystkich zmian (wrt .gitignore). Możesz dodać tylko określone pliki / katalogi:git add file.src
Odpowiedzi:
Jak głosi komunikat:
Git ma „obszar przejściowy”, w którym pliki muszą zostać dodane przed zatwierdzeniem, możesz przeczytać wyjaśnienie tego tutaj .
W twoim konkretnym przykładzie możesz użyć:
(zwróć uwagę na dodatkowe
a
w flagach, można również zapisać jakogit commit -a -m "message"
- oba robią to samo)Alternatywnie, jeśli chcesz być bardziej selektywny w kwestii tego, co dodajesz do zatwierdzenia, użyj polecenia git add, aby dodać odpowiednie pliki do obszaru przejściowego, a status git, aby wyświetlić podgląd tego, co ma zostać dodane (pamiętając, aby zwrócić uwagę na użyte sformułowanie).
Możesz również znaleźć ogólną dokumentację i samouczki dotyczące korzystania z git na stronie dokumentacji git, która poda więcej szczegółów na temat koncepcji przemieszczania / dodawania plików.
Kolejną ważną rzeczą, o której warto wiedzieć, jest interaktywne przemieszczanie - pozwala to dodawać części pliku do obszaru przemieszczania, więc jeśli wprowadziłeś trzy różne zmiany kodu (dla pokrewnych, ale różnych funkcji), możesz użyć trybu interaktywnego, aby podzielić zmienia i dodaje / zatwierdza każdą część po kolei. Pomocne mogą być takie mniejsze określone zatwierdzenia.
źródło
Nie dodałeś zmian. Dodaj je specjalnie
lub dodaj wszystkie zmiany (ze ścieżki katalogu głównego projektu)
lub użyj skrótu
-a
podczas zatwierdzania:źródło
Powinieneś zrobić:
źródło
Skopiowałem mały podprojekt, który miałem pod kontrolą źródła Gita, do innego projektu i zapomniałem usunąć folder .git. Kiedy poszedłem zatwierdzić, dostałem ten sam komunikat jak powyżej i nie mogłem go wyczyścić, dopóki nie usunąłem
.git
folderu.Jest to trochę głupie, ale warto sprawdzić, czy nie masz folderu .git w folderze, który się nie zatwierdza.
źródło
Mogłeś zrobić:
Aby sprawdzić, które pliki zmodyfikowałeś i które zostaną dodane (suchobieg: opcja -n), a następnie
Aby dodać tylko zmodyfikowane pliki
źródło
Uważam ten problem pojawiający się podczas Zrobiłem
git add .
w podkatalogu poniżej gdzie moje.gitignore
życie plików (katalog domowy z mojego repozytorium, że tak powiem). Spróbuj zmienić katalogi na najwyższy katalog, agit add .
następnie uruchomgit commit -m "my commit message"
.źródło
Może to oczywista rzecz, ale ...
Jeśli masz problem z indeksem, użyj git-gui . Bardzo dobrze widzisz, jak faktycznie działa indeks (obszar pomostowy).
Innym źródłem informacji, które pomogły mi zrozumieć indeks, był Scott Chacons „Getting Git” strona 259 i dalej.
Zacząłem od wiersza poleceń, ponieważ większość dokumentacji pokazuje tylko, że ...
Myślę, że git-gui i gitk sprawiają, że pracuję szybciej, i pozbyłem się złych nawyków, takich jak na przykład „git pull”… Teraz zawsze ściągam najpierw… Zobacz, jakie naprawdę są nowe zmiany, zanim się połączę.
źródło
Dzieje się tak dlatego, że masz folder, który jest już śledzony przez Git, w innym folderze, który jest również śledzony przez Git. Na przykład miałem projekt i dodałem do niego podfolder. Oba były śledzone przez Gita, zanim umieściłem jeden w drugim. Aby zatrzymać śledzenie tego w środku, znajdź go i usuń plik Git za pomocą:
W moim przypadku miałem aplikację WordPress, a folder, który dodałem, był motywem. Musiałem więc przejść do katalogu głównego motywu i usunąć plik Git, aby cały projekt był teraz śledzony przez rodzica, aplikację WordPress.
źródło
jeśli masz więcej plików w moim przypadku, mam 7000 plików graficznych, kiedy próbuję dodać je z folderu trasy projektu, nie dodał ich, ale kiedy idę do folderu obrazów, wszystko jest w porządku. Przejdź do folderu docelowego i wykonaj polecenia jak w okach
źródło
Miałem problem, w którym działałem
commit --amend
nawet po wydaniugit add .
i nadal nie działało. Okazało się, że wprowadziłem kilka.vimrc
dostosowań, a mój edytor nie działał poprawnie. Naprawienie tych błędów, tak abyvim
zwracał prawidłowy kod, rozwiązało problem.źródło
Miałem bardzo podobny problem z tym samym komunikatem o błędzie. „Zmiany nie są wystawiane dla zatwierdzenia”, ale kiedy robię diff, widać różnice. W końcu zorientowałem się, że jakiś czas temu zmieniłem skrzynkę katalogów. dawny. „PostgeSQL” na „postgresql”. Jak teraz pamiętam, git czasami zostawia plik lub dwa w starym katalogu sprawy. Następnie przekażesz nową wersję do nowej skrzynki.
Dlatego git nie wie, na którym polegać. Aby to rozwiązać, musiałem wejść na stronę github. Następnie możesz wyświetlić oba przypadki. Musisz usunąć wszystkie pliki z niepoprawnego katalogu ze skrzynkami. Upewnij się, że masz poprawną wersję zapisaną lub w odpowiednim katalogu z kopertami.
Po usunięciu wszystkich plików ze starego katalogu spraw cały katalog zniknie. Następnie wykonaj zatwierdzenie.
W tym momencie powinieneś być w stanie wykonać Pull na swoim komputerze lokalnym i nie widzieć już konfliktów. W ten sposób móc ponownie popełnić. :)
źródło
jeśli masz podfolder, który został sklonowany z innego repozytorium git, najpierw musisz usunąć plik $ .git $ z repozytorium podrzędnego:
rm -rf .git
następnie możesz przejść do folderu nadrzędnego i użyć gogit add -A
.źródło