問題のセットアップでは、質問のために改行してください。submodule initの呼び出しまでgitサブモジュールのサブディレクトリを隠してください
私は自分のgit repoを持っているprojectAに取り組んでいます。このprojectAには、独自の別個のgit repoであるprojectBにいくつかのオプションツールがあります。私が理解するところでは、これはgitサブモジュールのように聞こえるので、projectBはprojectAのサブモジュールになります。
これを設定するには、私はgit submodule add projectB
を使用します。これによりprojectBへのリンクのように機能するprojectAのサブディレクトリが作成され、その情報は.gitmodule
に保存されます。このファイルと "サブディレクトリ"の両方をコミットする必要があります。 projectBには何の注意も払わずにprojectAで開発を続けることができます。 projectBを更新してプッシュすると、projectA内のprojectBをgit submodule update --remote
で更新できます。これにより、プロジェクトBの現在のバージョン(projectAによって追跡されない)とサブディレクトリファイル自体(projectAによって追跡される)の両方のファイルを更新することによって、projectAのprojectBサブディレクトリが変更されます。
ここで、3番目のユーザーがprojectAを取得してprojectCを作成したいとしますが、projectBは必要ないとします。彼らはgit clone projectA
を使用し、projectAのすべてを取得し、.gitmodule
とprojectBの空のサブディレクトリを取得します。私は彼らにまだ.gitmodule
を手に入れて、彼らにオプションがあるようにしたいと思いますが、projectBの空のサブディレクトリがないようにすることは可能でしょうか?
私の質問は、それがユーザーませgit submodule init
>git submodule update
前PROJECTAにおけるサブモジュールProjectBのためのサブディレクトリを非表示にすることはできますか?
サブディレクトリは実際にprojectBを取得するためのコミットを示す特別なgitファイルなので、これは可能ではないのですが、これは.gitmodule
に保存されていると思います。興味深いのは、私が成し遂げたい、あるいはどんなgit hacksでも良い方法がある場合です。
一つの解決策は、 '隠しディレクトリ通話をすることです。サブモジュールがすべて存在するモジュール( 'mkdir .modules; cd .modules; git submodule add projectB')があります。それから私は '.gitignore'に' projectB'というファイルのシンボリックリンクを追加して、作業ディレクトリにシンボリックリンク 'ln -s .modules/projectB'を作成するように指示します。 'git submodule initをやらなければならない人のための余分なステップ。 gitサブモジュールの更新。 ln -s .modules/projectB'は大したことではありませんし、サブモジュールを望まない人にはプロジェクトをきれいに保ちます。 –