Подтвердить что ты не робот

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
4b9b3361

Ответ 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/*

Этот вывод может решить загадку.