Git игнорирование каталога, похоже, что он не существует
У меня клонированное репо. Там каталог, назовите его a/b/c, который использовал свое собственное репо, т.е. Был /b/c/.git/etc.
Теперь я хочу, чтобы файлы управлялись в основном репо. Я не забочусь об истории в a/b/c, поэтому я удалил директорию .git в a/b/c
Но проблема в том, что git status
полностью игнорирует a/b/c. Я не могу git add
его. Как будто я поместил путь в .gitignore (у меня его нет).
Очевидно, что раньше было git игнорировать subdir с dir в нем, но теперь, как он знает разницу?
Есть ли где-то еще, что игнорируются файлы, кроме .gitignore и .git/info/исключает? Нет ничего в файле .git/config?
Мне задали вопрос о статусе git. Не много:
/path/to/root/dir $ git status
# On branch fred
nothing to commit (working directory clean)
И что говорит git add. Еще меньше (ничего)
/path/to/root/dir $ git add a/b/c
Ответы
Ответ 1
Я понятия не имею, в чем проблема и как она возникла (v. раздражает), но вот как я ее исправил, если кто-то застрял:
git rm --cached a/b/c
git commit -m "removed phantom a/b/c dir"
git add a/b/c
git commit -m "finally able to add a/b/c"
Интересно, что git log a/b/c
перечисляет только комманду "finally able...". git show HEAD^
( "удаленный phantom..." commit говорит
-Subproject commit c311ccdc91c8be66019aa138d1c4af49a6b7a81c
Таким образом, похоже, что он рассматривал это как-то как-то. Мне нужно будет больше узнать о подпроектах и /или подмодулях.
Ответ 2
У вас есть глобальный файл gitignore? (Проверьте с помощью git config core.excludesfile
)
Ответ 3
Описание: Ваши файлы .gitignore (включая любые в самом каталоге) игнорируют все содержимое каталога. Если это так, Git будет считать его пустым, а не перечислять его)
У меня была похожая проблема. Я обнаружил, что каталог, который игнорируется, содержит файл .gitignore (хотя и не каталог .git). После удаления git внезапно снова заинтересовался им и перечислил его как неотслеживаемый файл/каталог в git status
.
Когда я восстановил исходное содержимое .gitignore, вставив его обратно в терминал, git снова не видит и не выводит каталог как неотслеживаемый.
Методом проб и ошибок я обнаружил, что могу удалить из .gitignore все, кроме следующих записей:
.factorypath
.springBeans
Если обе эти строки находятся в файле .gitignore, то содержащий каталог (который не является корнем репозитория git) не виден git.
Это вызывает больше вопросов, чем ответов для меня.
Вот список каталогов, но я не вижу шаблон.
total 72
[email protected] 10 stephen staff 320 30 Aug 19:04 .
drwxr-xr-x 17 stephen staff 544 30 Aug 18:59 ..
drwxr-xr-x 2 stephen staff 64 25 Jun 15:00 .apt_generated
-rw-r--r-- 1 stephen staff 1341 25 Jun 15:00 .classpath
-rw-r--r-- 1 stephen staff 18665 28 Jun 10:44 .factorypath
-rw-r--[email protected] 1 stephen staff 25 30 Aug 19:12 .gitignore
-rw-r--r-- 1 stephen staff 1094 28 Jun 10:44 .project
drwxr-xr-x 7 stephen staff 224 25 Jun 15:00 .settings
-rw-r--r-- 1 stephen staff 479 28 Jun 15:43 .springBeans
drwxr-xr-x 6 stephen staff 192 2 Jul 12:41 target
Ответ 4
Используйте git add -f
чтобы заставить git добавлять файлы, которые он в данный момент игнорирует.
Ответ 5
Похоже, что пустой каталог в принципе не существует для Git. И если все файлы в каталоге соответствуют шаблонам .gitignore, то git рассматривает каталог как пустой.
Это произошло в каталоге с файлом foo.tgz, а в корне репозитория файл .gitignore имел шаблон *.tgz. Очень расстраивает то, что команда 'git check-ignore' не сообщает что-то вроде "эй, noob, каталог мне кажется пустым".
В следующий раз попробуйте это:
git check-ignore strangely-ignored-directory/*
Этот вывод может решить загадку.