1. ホーム
  2. git

[解決済み] Gitサブモジュールの未追跡状態を解消するには?

2022-04-23 08:30:18

質問

Gitのサブモジュールにある未追跡のコンテンツを取り除くことができないようです。実行中 git status を生成します。

# masterブランチにて
# コミットのためにステージングされていない変更点。
# (use "git add ..." to update what will be committed) # (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." で作業ディレクトリの変更を破棄する)
# (サブモジュール内の未追跡または変更された内容をコミットまたは破棄する)
#
# modified: bundle/snipmate (未追跡の内容)
# modified: bundle/surround (未追跡のコンテンツ)
# modified: bundle/trailing-whitespace (未追跡のコンテンツ)
# modified: bundle/zencoding (untracked content)
#
コミットに変更はありません("git add" や "git commit -a" を使用します)。

を追加します。 --ignore-submodules しかし、もっと適切な、コアらしい方法でこの汚れを取り除く方法はないものでしょうか。

解決方法は?

git status は追跡されていない内容を報告するので、実際にきれいな状態を保つには、これらのサブモジュールにそれぞれ入って、:

  • 追跡されていない内容を追加してコミットする。
  • または、未追跡のコンテンツを参照するために .gitignore 各モジュールに固有の
  • または、同じ無視される内容をサブモジュールの .git/info/exclude というように ペキ1 報告書 コメント欄 .
  • で述べたように、サブモジュールの仕様にダーティを追加することもできます。 エズラスペクトル 's 答え (upvoted)です。

    git config -f .gitmodules submodule.<path>.ignore untracked
    
    
  • を追加したり グローバル .gitignore ファイル(多くの場合 ~/.gitignore-global ). 例えば .DS_Store または私の場合 Carthage/Build で報告されているように マリアン・チェルニー(Marián Černý コメント . 参照 .gitginore マンページ :

ユーザーがGitにあらゆる状況で無視させたいパターン(例えば、ユーザーが選んだエディターによって生成されたバックアップファイルや一時ファイルなど)は、通常、次のように指定されたファイルに入ります。 core.excludesFile を指定します。 ~/.gitconfig . そのデフォルト値は $XDG_CONFIG_HOME/git/ignore . もし $XDG_CONFIG_HOME は設定されていないか、空である。 $HOME/.config/git/ignore が代わりに使われます。