У мене була схожа проблема, але я намалював себе в куточку з інструментами GUI.
У мене був підпроект із кількома файлами, які я досі просто копіював, замість того, щоб перевіряти їхнє власне gpo repo. Я створив репо в підпапці, міг добре робити, натискати тощо. Але в батьківській репо-папці папка не розглядалася як підмодуль, і її файли все ще відслідковувалися батьківським репо-репортажем - нічого поганого.
Щоб вийти з цього безладу, мені довелося сказати Git припинити відстежувати папку (не видаляючи файли):
proj> git rm -r --cached ./ui/jslib
Тоді мені довелося сказати, що там є підмодуль (який ви не можете зробити, якщо щось там відстежується git):
proj> git submodule add ./ui/jslib
Оновлення
Ідеальний спосіб впоратися з цим включає ще кілька кроків. В ідеалі існуюче репо переміщується у свою власну директорію, без будь-яких батьківських git-модулів, вчиняється та висувається, а потім додається як підмодуль на зразок:
proj> git submodule add git@bitbucket.org:user/jslib.git ui/jslib
Це клонуватиме git repo як підмодуль - що включає стандартні кроки клонування, а також ще кілька інших незрозумілих кроків конфігурації, які git виконує від вашого імені, щоб змусити цей підмодуль працювати. Найважливіша відмінність полягає в тому, що він розміщує там простий .git-файл, а не каталог .git, який містить посилання на шлях, де живе справжній git dir - як правило, у корені батьківського проекту .git / module / jslib.
Якщо ви не будете робити такі речі, вони стануть нормально працювати для вас, але як тільки ви скористаєтесь і підштовхнете батька, а інший диявол піде, щоб витягнути цього батька, ви просто ускладнили їхнє життя. Їм буде дуже важко повторити структуру, яку ви маєте на вашій машині, якщо у вас є повний .git dir у підпапці dir, яка містить власний .git dir.
Отже, переміщення, натискання, git add submodule - це найчистіший варіант.