私は実際に、サブコマンドを含む git の使い方を学ぼうとしていますgit submodule
。SSH を使用して git リポジトリをホスト、プッシュ、プルできるサーバーをすでにセットアップしています。このサーバーにメインの git リポジトリ「Travail」を作成し、そこにすべてのプロジェクトをサブモジュールとして配置したいと考えています。
私の Travail リポジトリでは、すでに自分のプロジェクトをサブモジュールとして追加していますtools/libft
。このサブモジュールを開発し、プッシュおよびプルすることができます。
しかし、別のサブモジュール (サーバー上の fdf.git から fdf という名前) を追加しようとすると、次の問題が発生します。
git submodule add ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git projets/fdf
'projets/fdf' の git ディレクトリが、リモートでローカルに見つかりました: origin ssh://[メールアドレス]:XXXXX/opt/git/fdf.git ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git から再度クローンを作成する代わりに、このローカル git ディレクトリを再利用したい場合は、「--force」オプションを使用します。ローカル git ディレクトリが正しいリポジトリではない場合、またはこれが何を意味するのか不明な場合は、「--name」オプションを使用して別の名前を選択します。
実際にはサブディレクトリはありませんprojets/
git submodule sync
別のスレッドで、サブモジュールの元のリポジトリへの URL が変更されている可能性がある .gitmodules ファイルを使用または編集する必要があると読みました。
しかし、私の .gitmodules ファイルには、最初のサブモジュール (tools/libft) に関する情報しか含まれておらず、 projets/fdf に関する情報は含まれていません。
[submodule "tools/libft"]
path = tools/libft
url = ssh://[email protected]:XXXXX/opt/git/libft.git
私はフランス人の学生なので、英語の資料で何かを見逃した可能性もありますが、調べてみたところ、なぜこの問題が発生するのか全くわかりません。
解決策が得られれば嬉しいですが、説明だけでも助かります。
ベストアンサー1
最近削除したサブモジュールと同じパスを持つサブモジュールを追加しようとして、この SO 投稿にアクセスしました。
これが最終的に私にとってうまくいった方法です(この記事はとても役に立ちました):
まだ実行していない場合は
git rm --cached path_to_submodule
(末尾のスラッシュなし)と
rm -rf path_to_submodule
それから:
- ファイルから関連する行を削除します
.gitmodules
。たとえば、次の行を削除します。
[submodule "path_to_submodule"]
path = path_to_submodule
url = https://github.com/path_to_submodule
- .git/config から関連するセクションを削除します。たとえば、以下を削除します:
[submodule "path_to_submodule"]
url = https://github.com/path_to_submodule
rm -rf .git/modules/path_to_submodule
その後、最終的に次のことが可能になります。
git submodule add https://github.com/path_to_submodule