Git repoでドットで始まるファイル(隠しファイル)を追加するにはどうすればよいですか? Gitは常にそれらを無視するようです。
git add .
と入力すると、GIT_DIR
のドットファイルが追加されますが、サブディレクトリからは追加されません。一方、git add subdir/.dotfile
は機能しません。
git add -f
を試し、!.*
をGIT_DIR/.git/info/exclude
に入れました。運が悪い。
git add .
とgit add dir/.dot
は、手元にあるGitの飾り気のないバージョン1.6.6.1と1.7.0で問題なく動作します。
% git --version
git version 1.6.6.1
% git ls-files -o
.baz/baz
.foo
bar/.bar
quuux/quuux
quux
% git add .
% git ls-files -o
% git ls-files
.baz/baz
.foo
bar/.bar
quuux/quuux
quux
使用しているGitのバージョンは何ですか?あなたのサブディレクトリは実際にサブモジュールですか(独立して管理されていますか)?
「ドットファイル」はデフォルトでは除外されていませんが、システム、リポジトリ、または作業ツリーの一部の設定では、それらがそのように設定されている可能性があります。それらがgit ls-files --exclude-standard -oi
に表示される場合、それらは無視されており、「!。*」はそれらを「無視」する正しい方法です。しかし、効果を上げるには、そのパターンを適切な場所に配置する必要があります。無視は次の順序で処理されます。
git config core.excludesfile
によって報告されたファイル([.____。によって設定される可能性があります]GIT_EDITOR=echo git config --system --edit
でパス名を取得してください))。パス名が1つのファイルのパターンに一致する場合、後続のファイルは参照されません。各ファイルの最後の一致が「勝ち」ます。 $ GIT_DIR/info/excludeのパターンは、。gitignoreファイルのパターンをオーバーライドできません。したがって、ファイルが無視されている場合(git ls-files --exclude-standard -oi
ごと)、および$ GIT_DIR/info/excludeの "!。*"が無効な場合は、該当するすべての.gitignore
を確認してください犯人のためのファイル。
パス名で具体的に追加できます。たとえば、
git add */.*
または
find . -name '.[a-z]*' -exec git add '{}' ';'
(-name
エントリを持つすべてのディレクトリを必ずしも取得する必要がないため、.
に注意することをお勧めします。)
しかし、はるかにこれを行う最も簡単な方法はgit gui
を使用することです。ファイルをクリックするだけです。
興味深いことに、「Git-Bash」で実行されているgitバージョン2.12.0.windows.1のWindows 10では、「git add。*」も失敗します。 .classpathや.projectなどのファイルは追加されないため、後でコミットされません。しかし、まあ、これはバグレポートを提出するための間違った場所です。