Git внутри git: отключить внутренний git, сохранить файлы

Резюме

Гит внутри гита. Удалены внутренние .git, файлы сохранены. Толкать. Клон. Папки есть, но пустые.

Что я пытаюсь сделать

Итак, я пытаюсь загрузить существующий репо на свой собственный сервер git. Внутри репо есть несколько репозиториев (которые не являются частью исходного репо). Мне не нужно, чтобы они были подключены, прежде всего важна стабильность - это клонирование ДОЛЖНО создавать рабочую копию файлов сервера PHP.

Как я пытался

Поэтому я удаляю папку .git из внутренних репозиториев и помещаю основную на пустой сервер git. Затем я клонирую только что созданный удаленный репозиторий в новый локальный каталог - папки, в которых раньше было .git, вообще пусты (сами папки существуют). У меня также установлен GitLab, и там папка выглядит иначе, чем обычные папки, без дополнительной информации (обратите внимание на папку «flashcard»):

введите здесь описание изображения

Вопрос

Есть ли другой способ удалить возможности git из папки? Что мешает папке быть просто обычными файлами? У меня закончились идеи.

Другая информация

.gitignore и .git/ifno/exclude не трогайте эти каталоги.


person krivar    schedule 24.02.2014    source источник
comment
Вы git add и git зафиксировали файлы во внешнем репо?   -  person Peter Westlake    schedule 24.02.2014
comment
@PeterWestlake Нет. Поскольку я не добавлял и не изменял никаких файлов, мне нечего было коммитить. .git папки в любом случае не отслеживаются, поэтому их нельзя зафиксировать.   -  person krivar    schedule 24.02.2014
comment
Вам все еще нужно сообщить внешнему репо о файлах. Подробности смотрите в моем ответе.   -  person Peter Westlake    schedule 24.02.2014


Ответы (2)


Наконец-то нашел ответ.

git rm --cached path/to/submodule (без / или * в конце)

Я сам не добавлял эти репозитории в качестве подмодулей, но очевидно, что они каким-то образом кэшировались как таковые.

После очистки кеша вам все равно нужно добавить файлы во внешнее репо, как предложил Питер.

person krivar    schedule 25.02.2014

Репозиторий git содержит всю информацию о файлах в папке .git, поэтому при его удалении вы удаляете всю информацию о файлах внутреннего репо. Сами файлы не изменились, но внешний репозиторий о них не знает, потому что никогда этого не делал. О них знал внутренний репозиторий, которого больше нет. Вам нужно git add и git commit их.

person Peter Westlake    schedule 24.02.2014
comment
это неправильно. Так как добавить нечего. У меня есть оригинальное репо (с внутренними репозиториями), которое я могу дублировать и пробовать столько раз, сколько захочу. Когда я удаляю папки .git изнутри, файлы не становятся видимыми с git status. Таким образом, добавить нечего. - person krivar; 25.02.2014
comment
также ручное добавление git add path/to/folder не добавляет ничего для фиксации. - person krivar; 25.02.2014
comment
но git хранит его где-то - если я переименую папку; совершить; и назовите его обратно - теперь он регистрирует удаление, а не добавление. Каталог как будто полностью отсутствует, что касается git. - person krivar; 25.02.2014
comment
Так что это оказалось правильным, но настоящая проблема заключалась в том, что каталог был кэширован - см. Мой собственный ответ. - person krivar; 25.02.2014