Git サブモジュールの追加: 「git ディレクトリがローカルに見つかりました」という問題 質問する

Git サブモジュールの追加: 「git ディレクトリがローカルに見つかりました」という問題 質問する

私は実際に、サブコマンドを含む 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

それから:

  1. ファイルから関連する行を削除します.gitmodules。たとえば、次の行を削除します。
[submodule "path_to_submodule"]
        path = path_to_submodule
        url = https://github.com/path_to_submodule
  1. .git/config から関連するセクションを削除します。たとえば、以下を削除します:
[submodule "path_to_submodule"]
        url = https://github.com/path_to_submodule
  1. rm -rf .git/modules/path_to_submodule

その後、最終的に次のことが可能になります。

git submodule add https://github.com/path_to_submodule

おすすめ記事