не вдається додати папку в git


21

Я додаю нову папку (насправді я її клонував з іншого репо, і забув це), потім я там вніс деякі зміни. Крім того, я зробив багато змін в інших місцях, коли я намагався зробити git add

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   protected/ext/SpecificFolder (modified content)
#

Тоді я пам’ятаю, що, можливо, там була папка .git (тому що попередній я робив там клонування Git). Я зайшов у цю папку і видаляю непотрібні файли (папки) і папку .git. Я перевірив статус git, нічого дивного. Потім виконайте переказ на іншій гілці і раптом я зрозумію, що ця папка не була додана до останньої фіксації. Фактично додано папку, але файли всередині були проігноровані. Зараз, навіть коли я намагаюся зробити git addдля цієї папки, нічого не відбувається і git statusне показує змін :(

Що я можу зробити ?


6
Якщо хтось опинився на цій сторінці із проблемою, з якою я зіткнувся: мені не вдалося додати файли до підпапки до Git. Пізніше я виявив, що у цієї підпапки було власне .gitсховище, і файли додавались до цього сховища замість сховища в основній папці. Навіть у графічному інтерфейсі Git ця підпапка з'явилася як файл, а не як папка.
Nav

Відповіді:


29

Git не відстежує каталоги; а лише файли всередині них.

Це здається, що у вас може бути шаблон ігнорування, який змушує addнічого не робити. Ви можете бачити проігноровані файли за допомогою git status --ignored; потім їх можна відстежитиgit add --force protected/ext/SpecificFolder


1
Ні, це не презентовано git status --ignored, я чомусь думаю, що це пов'язано з підмодулем
user1016265

1
Ця команда була рятівною. Без цього я ніколи б не зрозумів, який каталог був проігнорований.
ІгорГанапольський

ух ..... Я почував себе абсолютно нерозумно, читаючи цей факт після використання git деякий час ^^
XandruCea

1
Ага, нарешті. Це була моя проблема. Я скопіював .gitignore з батьківського і в підмодулі. Я ігнорував "config /", і пізніше створив каталог під джерелом dir з назвою config. Не вдалося додати курси. Проблема вирішена зараз дякую :-)
Avec

7

Git не відслідковує каталоги EMPTY. Якщо у вас є проект з декількома шарами підкаталогів, git насправді відстежує каталоги з файлами в них. Якби цього не було, то це був би один плоский сховище файлів.


Ух, це така проста річ, але чорт. Я прочитав це і пішов "Боже мій, саме так",
Брайан каже, що відбудується Моніка

3

Я випадково робив саме те, що робив цей користувач: Додайте наявне сховище git всередині іншого.

Симптомом було те, що git розпізнавав цей каталог як файл, і тому не зміг додати файли каталогу.

Щоб вирішити це питання, я видалив .gitпапку в папці, перемістив цю папку в інший каталог, очистив індекс, видалив каталог, де в моєму репо, і тоді я зміг правильно додати каталог.

Моральність цього полягає в тому, щоб не додавати сховище всередину іншого.


5
Це також можна виправити, запустившисьgit rm --cached path_to_submodule
Віктор Марчук


0

Спробуйте додати файл у цей каталог.

$ git add my-dir/index.html

Якщо ви бачите вихід, як показано нижче:

The following paths are ignored by one of your .gitignore files:
my-dir/index.html
Use -f if you really want to add them.
fatal: no files added

В одному з ваших посилань на gitignores є правило, яке заважає додавати цей каталог.


0

Я виявив подібні побічні ефекти, намагаючись перетворити те, що було підмодулем, у звичайну підпапку.

Повторне додавання папки, яку я намагався перетворити, здавалося, працює, але виявляється, що файли всередині неї насправді не додані.

Намагаючись спеціально додати файл всередину, він дав мені краще попередження

git add sites/all/modules/contrib/transclusion/transclusion.module 
fatal: Pathspec 'sites/all/modules/contrib/transclusion/transclusion.module' is in submodule 'sites/all/modules/contrib/transclusion'
  • тому це було пов'язано з тим, як я вручну намагався видалити старий підмодуль, оскільки не було добре задокументованого процесу для його належного виконання. - Я щойно видалив його з .gitmodules. Інші речі насправді були необхідні, щоб стерти тіні підмодуля.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.