web-dev-qa-db-ja.com

gitにリポジトリにドットファイルを追加させる

Git repoでドットで始まるファイル(隠しファイル)を追加するにはどうすればよいですか? Gitは常にそれらを無視するようです。

git add .と入力すると、GIT_DIRのドットファイルが追加されますが、サブディレクトリからは追加されません。一方、git add subdir/.dotfileは機能しません。

git add -fを試し、!.*GIT_DIR/.git/info/excludeに入れました。運が悪い。

30
Sergey Kovalev

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に表示される場合、それらは無視されており、「!。*」はそれらを「無視」する正しい方法です。しかし、効果を上げるには、そのパターンを適切な場所に配置する必要があります。無視は次の順序で処理されます。

  • 。gitignore直下のディレクトリの場合、
  • 。gitignore親ディレクトリ(各親、リポジトリルートまで)、次に
  • $ GIT_DIR/info/exclude、次に
  • git config core.excludesfileによって報告されたファイル([.____。によって設定される可能性があります]
    • $ GIT_DIR/config
    • $ HOME/.gitconfig、または
    • システム構成ファイル(GIT_EDITOR=echo git config --system --editでパス名を取得してください))。

パス名が1つのファイルのパターンに一致する場合、後続のファイルは参照されません。各ファイルの最後の一致が「勝ち」ます。 $ GIT_DIR/info/excludeのパターンは、。gitignoreファイルのパターンをオーバーライドできません。したがって、ファイルが無視されている場合(git ls-files --exclude-standard -oiごと)、および$ GIT_DIR/info/excludeの "!。*"が無効な場合は、該当するすべての.gitignoreを確認してください犯人のためのファイル。

29
Chris Johnsen

パス名で具体的に追加できます。たとえば、

git add */.*

または

find . -name '.[a-z]*' -exec git add '{}' ';'

-nameエントリを持つすべてのディレクトリを必ずしも取得する必要がないため、.に注意することをお勧めします。)

しかし、はるかにこれを行う最も簡単な方法はgit guiを使用することです。ファイルをクリックするだけです。

15
Norman Ramsey

興味深いことに、「Git-Bash」で実行されているgitバージョン2.12.0.windows.1のWindows 10では、「git add。*」も失敗します。 .classpathや.projectなどのファイルは追加されないため、後でコミットされません。しかし、まあ、これはバグレポートを提出するための間違った場所です。

1
Angel O'Sphere