【Git】エラーの原因と対処法:warning: adding embedded git repository You’ve added another git repository inside your current repository

github-prograshi(プロぐらし)-kv git/github
記事内に広告が含まれていることがあります。

プロジェクトの中でGitで「git add」しようとしたときに以下のようなエラーが発生することがあります。

warning: adding embedded git repository: レポジトリ名
You've added another git repository inside your current repository

ここでは、このエラーの原因と対処法についてまとめています。


エラーの発生状況

「git clone」でファイルなどをプロジェクトの中に追加して、加えたファイルを「git add」してステージングしようとしたときに以下のエラーが発生。

$ git add .

warning: adding embedded git repository: レポジトリ名
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint: 
hint:   git submodule add <url> WOW
hint: 
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint: 
hint:   git rm --cached WOW
hint: 
hint: See "git help submodule" for more information.

Gitのレポジトリを「git add」しようとしているという警告です。


原因

元々あるプロジェクトの中に別のプロジェクトをgit cloneしたため、Gitが管理しているレポジトリが重複したことが原因です。

ここでは、Laravelのプロジェクトの中に、アニメーションを使うためのWOW.jsというライブラリを「git clone」してきました。

元々のLaravelのプロジェクトの中にもGitレポジトリがあり、さらに「git clone」してきたモノの中にも別のGitレポジトリがあったことでバッティングが発生した結果です。


対処法

対処法は追加したレポジトリの取扱によって以下の2つの方法に分かれます。

追加したレポジトリのパターン
  1. ファイルだけ欲しくて、追加したレポジトリのコミット履歴などは不要な場合。
  2. レポジトリをサブモジュールとして使いたい場合。


ファイルだけ欲しくて、追加したレポジトリのコミット履歴などは不要な場合

追加したレポジトリのファイルだけ欲しくて、コミット履歴などは不要な場合は、不要な方のレポジトリのキャッシュを削除します。

$ git rm --cached レポジトリ名
point

不要なレポジトリとは、Gitでコミット履歴を管理する必要がないレポジトリということです。

実例

ここでは、「git clone」してきたWOWというレポジトリが不要なので、削除します。

$ git rm --cached WOW
error: the following file has staged content different from both the
file and the HEAD:
    WOW
(use -f to force removal)

削除が完了しました。

再度「git add」を実行してみます。

$ git add .
$

エラーが出ることなくgit addすることができました。


サブモジュールとして追加した場合

「git clone」したレポジトリをサブモジュールとして使いたい場合は、以下のコマンドを実行します。

git submodule add <リモートレポジトリのURL> <登録するレポジトリ名>
合わせて読みたい



ヒントの中身

なお、上記の対処法は「git add」したときに表示されたエラーの内容にヒントとして記載されています。

$ git add .

warning: adding embedded git repository: レポジトリ名
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint: 
hint:   git submodule add <url> WOW
hint: 
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint: 
hint:   git rm --cached WOW
hint: 
hint: See "git help submodule" for more information.

  ↓ 翻訳

警告:埋め込まれたgitリポジトリを追加します:レメッセージトリ名

ヒント:現在のリポジトリ内に別のgitリポジトリを追加しました。
ヒント:外部リポジトリのクローンには、
ヒント:埋め込まれたリポジトリであり、それを取得する方法がわかりません。
ヒント:サブモジュールを追加する場合は、次を使用してください。
ヒント:
ヒント:git submodule add <url> WOW
ヒント:
ヒント:このパスを誤って追加した場合は、から削除できます。
ヒント:インデックス:
ヒント:
ヒント:git rm --cached WOW
ヒント:
ヒント:詳細については、「githelpサブモジュール」を参照してください。


タイトルとURLをコピーしました