1. ホーム
  2. git

[解決済み] Git: 'modified content' /dirty サブモジュールのエントリを status や diff などで表示させないようにできますか?

2022-07-01 10:59:54

質問

いつからか(1.6.xリリースの頃だと思いますが)、gitはサブモジュール内の変更を認識するようになりました。それは私を困らせるだけです。

$ git status vendor | grep modified:
# modified: vendor/rails (内容が変更されました)

$ git diff vendor/
diff --git a/vendor/rails b/vendor/rails
--- a/vendor/rails
+++ b/vendor/rails
@@ -1 +1 @@
-Subproject commit 046c900df27994d454b7f906caa0e4226bb42b6f
+Subproject commit 046c900df27994d454b7f906caa0e4226bb42b6f-dirty

停止させてください?

編集してください。

OK、それで私は答えを持っています。今度は別の質問があります。

これを ~/.gitconfig ? 私の初期知識ではできないように見えますし、パッチをざっと見た限りでは有望なものは見当たりませんでした。(まだエイリアスを作ることはできるようです。)

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

更新:参照(とアップボート) ニルシャルデンワング 's 答え に追加する可能性に関して .gitmodules ファイルに、与えられたサブモジュールのダーティな状態を無視するための設定パラメータを追加する可能性についてです。

ignore = dirty


git 1.7.2 がリリースされ、その中には --ignore-submodules オプションが追加されました。 status .

から git help status :

--ignore-submodules[=<when>] サブモジュールの変更を無視する。
    変更を探すときに、サブモジュールの変更を無視します。
    <when> には "untracked", "dirty" または "all" のいずれかを指定することができ、これはデフォルトです。
    がデフォルトです。untracked"が使用された場合、サブモジュールは、untracked"のみを含む場合、ダーティとはみなされません。
    サブモジュールが未追跡のコンテンツのみを含む場合、ダーティとはみなされません。
    を含む場合、サブモジュールはダーティとはみなされません (ただし、変更されたコンテンツがないかスキャンはされます)。
    dirty" を使用すると、サブモジュールの作業ツリーに対するすべての変更を無視します。
    サブモジュールのワークツリーへの変更はすべて無視され、スーパープロジェクトに保存されているコミットへの変更のみが表示されます。
    に保存されているコミットへの変更のみが表示されます (これは 1.7.0 より前の動作です)。
    1.7.0). all"を使うと、サブモジュールへのすべての変更が隠されます(そして
    サブモジュールのサマリーの出力を抑止します。
    configオプションstatus.submodulesummaryが設定されている場合、サブモジュールのサマリーの出力を抑制します)。

私が欲しい値は dirty .

git status --ignore-submodules=dirty

怠け者の私はエイリアスを使います。

alias gst='git status --ignore-submodules=dirty'