Dodałem nowy folder (właściwie sklonowałem go z innego repozytorium i zapomniałem o tym), a następnie wprowadziłem kilka zmian. Dodatkowo dokonałem wielu zmian w innych miejscach, kiedy próbowałem dodać git
# 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)
# (commit or discard the untracked or modified content in submodules)
#
# modified: protected/ext/SpecificFolder (modified content)
#
Potem pamiętam, że może był folder .git (ponieważ poprzednio tam klonowałem git). Poszedłem do tego folderu i usunąłem niepotrzebne pliki (foldery) oraz folder .git. Sprawdziłem status gita, nic dziwnego. Następnie zatwierdzaj i kasuj do innej gałęzi i nagle stwierdzam, że ten folder nie został dodany do ostatniego zatwierdzenia. Właściwie folder został dodany, ale pliki wewnątrz zostały zignorowane. Teraz nawet kiedy próbuję zrobić git add
dla tego folderu nic się nie dzieje i git status
nie pokazuję żadnych zmian :(
Co mogę zrobić ?
.git
repozytorium i pliki są dodawane do tego repozytorium zamiast do repozytorium w folderze głównym. Nawet w graficznym interfejsie Git ten podfolder pojawił się jako plik zamiast jako folder.Odpowiedzi:
Git nie śledzi katalogów; ale tylko zawarte w nich pliki.
Wygląda na to, że masz wzór ignorowania, który powoduje,
add
że nic nie robisz. Możesz zobaczyć zignorowane pliki za pomocągit status --ignored
; można je następnie śledzić za pomocągit add --force protected/ext/SpecificFolder
źródło
git status --ignored
, jakoś myślę, że ma to związek z submodułemGit nie śledzi pustych katalogów. Jeśli masz projekt z wieloma warstwami podkatalogów, git faktycznie śledzi znajdujące się w nich katalogi z plikami. Gdyby tak nie było, byłoby to jedno płaskie repozytorium plików.
źródło
Zdarzyło mi się zrobić dokładnie to, co zrobił ten użytkownik: dodaj istniejące repozytorium git do innego.
Objawem było to, że git rozpoznał ten katalog jako plik, a zatem nie mógł dodać plików katalogu.
Aby rozwiązać to pytanie,
.git
usunąłem folder w folderze, przeniosłem ten folder do innego katalogu, wyczyściłem indeks, usunąłem katalog, w którym znajdowałem się w moim repozytorium, a następnie byłem w stanie poprawnie dodać katalog.Morał tego jest taki: nie dodawaj repozytorium do innego.
źródło
git rm --cached path_to_submodule
Tutaj jest lepsza odpowiedź: użycie .gitkeep
TL; DR, dodaj
.gitkeep
plik do pustego kataloguźródło
Spróbuj dodać plik w tym katalogu.
Jeśli zobaczysz wynik podobny do poniższego:
W jednym z twoich gitignorów znajduje się reguła, która uniemożliwia Ci dodanie tego katalogu.
źródło
Znalazłem podobne efekty uboczne po próbie przekształcenia tego, co kiedyś było submodułem, w normalny podfolder.
Ponowne dodanie folderu, który próbowałem przekonwertować, wydawało się działać, ale okazuje się, że pliki w nim nie zostały faktycznie dodane.
Próba specjalnego dodania do niego pliku dała mi lepsze ostrzeżenie
źródło