私も同様の問題を抱えていましたが、GUIツールを使用して自分を隅々まで描いていました。
自分のgitリポジトリにチェックインするのではなく、これまでコピーしたファイルがいくつかあるサブプロジェクトがありました。サブフォルダーにレポを作成し、コミット、プッシュなどをうまく行うことができました。しかし、親リポジトリでは、サブフォルダーはサブモジュールとして扱われず、そのファイルは依然として親リポジトリによって追跡されていました。
この混乱から抜け出すには、(ファイルを削除せずに)サブフォルダーの追跡を停止するように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リポジトリがサブモジュールとしてクローンされます。これには、標準のクローン作成手順が含まれますが、gitがサブモジュールを機能させるためにgitが代わって行うその他のいくつかのあいまいな設定手順も含まれます。最も重要な違いは、実際のgitディレクトリが存在する場所へのパス参照を含む.gitディレクトリではなく、単純な.gitファイルをそこに配置することです。通常は親プロジェクトのルート.git / modules / jslibにあります。
あなたがこの方法で物事をしなければ、彼らはあなたのためにうまく機能しますが、あなたが親をコミットしてプッシュするとすぐに、別の開発者がその親を引っ張ろうとすると、あなたは彼らの人生をかなり難しくしました。独自の.git dirを含むdirのサブフォルダーに完全な.git dirがある限り、彼らがマシン上に持っている構造を複製することは非常に困難です。
したがって、移動、プッシュ、git addサブモジュールは、最もクリーンなオプションです。