Ответ 1
UPDATE
Есть две общие причины, по которым Git игнорирует файл: gitignore
и submodules
.
Чтобы быть более конкретным, следующие условия вызовут Git игнорировать файл, когда вызывается "git add
":
- Файл соответствует шаблону
$GIT_DIR/exclude
. - Файл соответствует шаблону в файле
.gitignore
внутри репо. - Файл соответствует шаблону в пользовательском файле
.gitignore
(указанном 'git config --global core.excludesfile
'). - Файл является частью подмодуля.
Принуждение 'git add
' к игнорируемому файлу:
Вы можете проверить, игнорируется ли какой-либо конкретный файл, вызывая 'git add full/path/to/file
'.
На странице руководства указано, что "Если в командной строке явно указано проигнорированный файл, команда завершится неудачно со списком игнорируемых файлов".
Если файл игнорируется, вы можете заставить его добавить "git add --force full/path/to/file
".
Инструкции по устранению ссылки на подмодуль:
Как отмечено в предыдущем ответе, shells/smallApps
является submodule в вашем репозитории.
Если файл является частью подмодуля, ситуация более сложная. Вы не можете изменять содержимое субмодуля из основного проекта.
Если вы хотите исключить ссылку на субмодуль и напрямую отслеживать файлы в своем основном репо, необходимо выполнить несколько шагов. Вы не можете просто удалить каталог ".git" из подмодуля. Между вашим основным хранилищем и подмодулем существует три связи:
- Файл
.gitmodules
в вашем основном репо. - Запись в
.git/config
вашего основного репо. - Любые коммиты, связанные с подмодулем в вашей основной истории репо.
В этом связанном вопросе SO вам необходимо выполнить следующие шаги, чтобы полностью удалить подмодуль:
ПРИМЕЧАНИЕ. Если для этого субмодуля зависит другое ветвление, то удаление его может повредить ваш репозиторий! Это опасная операция... используйте с осторожностью.
- Удалите соответствующую строку из файла
.gitmodules
. - Удалить соответствующий раздел из
.git/config
. - Запустите
git rm --cached path_to_submodule
(нет косой черты). - Фиксировать
Файлы, которые были частью субмодуля, теперь не отслеживаются, и вы можете решить сохранить или удалить их по своему желанию (с одним из указанных ниже предостережений).
Если вам не нужны эти файлы, вы можете просто удалить их.
Предостережение. Если вы хотите сохранить эти файлы (что вам кажется нужным), вы должны вручную удалить каталог .git
из папки подмодуля:
-
cd path_to_submodule
-
rm .git
-
cd ..
-
git add path_to_submodule
-
git status
-
git commit
UPDATE:
Запрос дополнительной информации:
Чтобы помочь отладить эту проблему, опубликуйте вывод следующего полного сеанса команд:
cd to the top-level directory in your repo
ls -al
cat .git/config
find . -name ".git*"
git status
git add editors
git add shells
git status
Основываясь на описании того, что вы сделали до сих пор, я ожидаю увидеть:
- Нет
.gitmodules
файла в любом месте - Только один каталог
.git
(найденный в корне вашего репо) - Нет
.git
в каталогеeditors/vim/vimdoclet
- Нет
.git
в каталогеshells/smallApps