web-dev-qa-db-ja.com

gitサブモジュールの変更されたファイルのステータス

メインのgitフォルダーツリーにサブモジュールを追加しましたが、何も変更していませんが、変更されています。これについて私は何をしますか?

$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#    modified:   example.com/soundmanager
#
no changes added to commit (use "git add" and/or "git commit -a")

Gitサブモジュールの更新を試しましたが、何も実行されません。

43
Poe

Gitサブモジュールのステータスが報告される方法は、最近のバージョンのgitと比べて大幅に変更されているため、正確に支援できるように、git --versionの出力も含める必要があります。

ただし、いずれの場合でも、git diff example.com/soundmanagerの出力で詳細がわかります。同じコミット名で-dirtyが新しいバージョンに追加された出力が表示される場合:

diff --git a/example.com/soundmanager b/example.com/soundmanager
--- a/example.com/soundmanager
+++ b/example.com/soundmanager
@@ -1 +1 @@
-Subproject commit c5c6bbaf616d64fbd873df7b7feecebb81b5aee7
+Subproject commit c5c6bbaf616d64fbd873df7b7feecebb81b5aee7-dirty

...つまり、サブモジュールのgit statusがクリーンでないことを意味します。cd example.com/soundmanagerを試してからgit statusを試して、何が起こっているかを確認してください。

一方、コミットバージョンが異なる場合は、次のようになります。

diff --git a/example.com/soundmanager b/example.com/soundmanager
index c4478af..c79d9c8 160000
--- a/example.com/soundmanager
+++ b/example.com/soundmanager
@@ -1 +1 @@
-Subproject commit c4478af032e604bed605e82d04a248d75fa513f7
+Subproject commit c79d9c83c2864665ca3fd0b11e20a53716d0cbb0

...つまり、サブモジュールのバージョン(つまり、cd example.com/soundmanager && git show HEADから表示されるもの)は、メインプロジェクトのツリーでコミットされたバージョン(つまり、git rev-parse HEAD:example.com/soundmanagerから表示されるもの)とは異なります。前者が正しい場合は、次のような方法で、メインプロジェクトにサブモジュールの新しいバージョンを追加してコミットする必要があります。

git add example.com/soundmanager
git commit -m "Update the soundmanager submodule"

一方、後者が必要な場合は、サブモジュールのバージョンを変更できます。

git submodule update example.com/soundmanager
74
Mark Longair

新しいディレクトリのコンテンツを単に追加するのではなく、具体的にディレクトリを追加することにより、誤ってサブモジュールを追加して、この状態になりました。

次のようにサブモジュールを削除するだけです:

git rm --cached path/to/my/new_directory

次に、最初に意図したとおりのコンテンツを追加します。

git add path/to/my/new_directory/*
5
awe

この問題を解決するには、次のgitコマンドを使用しました。

git submodule update --init  --recursive
1
blacet wang