1. ホーム
  2. ギット

[解決済み】Gitサブモジュールの追加:「gitディレクトリがローカルに見つかりました」問題

2022-04-28 02:26:39

質問

実は、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://[email protected]:XXXXX/opt/git/fdf.git このローカルのgitディレクトリを再利用したい場合は、以下の場所から再度クローンするのではなく ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.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

私はフランス語の学生なので、私が持っている英語のドキュメントで何かを見逃しているかもしれませんが、私は検索し、私はこの問題が発生する理由を本当に理解していない。

解決策があれば嬉しいのですが、説明だけでもあれば助かります。

どのように解決するのですか?

最近削除したサブモジュールと同じパスのサブモジュールを追加しようとして、この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