Git добавить все подкаталоги

У меня проблемы с добавлением папки и всех ее подкаталогов в мой репозиторий git. Я понял, что это очень популярный вопрос после некоторого поиска в Google, и я попробовал каждое предложение без удачи, особенно предложение со страницы руководства на git-add. Я даже пытался git add -A без успеха. Ради простоты, скажем, я инициализировал свой репозиторий git как Dir1, Тогда у меня есть следующая структура каталогов файлов.

Dir1/file1-1.txt
Dir1/file1-2.txt
Dir1/Dir2/file2-1.txt
Dir1/Dir2/Dir3/file3-1.txt

Мои настоящие файлы имеют подкаталоги глубиной 5-6 уровней, так есть ли команда git для добавления всех файлов из каждого подкаталога в мой репозиторий? Прямо сейчас, когда я делаю предложение со страницы руководства git add Dir1/\* я могу видеть Dir2 в моем репо, но он отображается как зеленая папка, и я не могу открыть его, что заставляет меня поверить, что все файлы / папки в Dir2 не добавили. Любая помощь будет принята с благодарностью. Я новый пользователь git (меньше недели пользуюсь им), поэтому постарайтесь сохранить ваши инструкции на уровне новичка.

9 ответов

Решение

Делать,

git add .

в то время как в корне хранилища. Это добавит все. Если вы делаете git add *, он будет только добавлять файлы * указывает на. Одна точка указывает на каталог.

Если ваш каталог или файл не был добавлен в git index/repo после выполнения вышеуказанной команды, не забудьте проверить, помечен ли он как git в файле .gitignore.

Простое решение:

git rm --cached directory
git add directory

Вы также можете столкнуться с проблемами, если подкаталог сам по себе является git-репозиторием, т.е. имеет каталог.git. Проверьте с помощью ls -a,

Для удаления перейдите в подкаталог и rm .git -rf,

Также изо всех сил, но получил право печатать

git add -f ./JS/*

где JS - это имя моей папки, содержащей подпапки и файлы

Я не могу точно сказать, так ли это, но то, что мне показалось проблемой, - наличие файлов.gitignore в некоторых подкаталогах. Опять же, я не могу гарантировать это, но все работало после того, как они были удалены.

  1. git add один файл, который находится на самом глубоком уровне вашей файловой структуры (последний уровень Folderвы хотите добавить).
    Например:
    git add Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.md
  2. Затем,git add --all :/.
    Он добавит все FoldersSubfolders и filesк существующему репозиторию.
  3. git commit -m 'your commit.
  4. git push -u origin main, нажмите на удаленный источник. Вуаля!

Ссылки: рекурсивно добавить всю папку в репозиторий

Если у кого-то не работает (как и в моем случае), используйте который включены все файлы во всех подкаталогах. Моя структура каталогов:

      MainDirectory
|_.git
|_README
|_folder1
|   |_file1
|   |_file2
|   |_subfolder1
|   |    |_file3
|   |    |_file4
|   |_subfolder2
|        |_file5
|        |_file6
|_folder2 
|   |_file1
|   |_file2
|   |_subfolder1
|   |    |_file3
|   |    |_file4
|   |_subfolder2
|        |_file5
|        |_file6
|_otherfiles

делает git add ./* включены все на глубину одного уровня или более, в то время как git add . добавлял только файлы текущего уровня.

Я видел эту проблему раньше, когда имя (под) папки, которую я пытался добавить, начиналось с "_Something_"

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

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

находить. имя ".gitignore"

а затем изучите результаты, чтобы увидеть, что может помешать добавлению ваших подкаталогов.

Также могут быть задействованы субмодули. Проверьте каталоги с ошибками на наличие файлов ".gitmodules".

Другие вопросы по тегам