[解決済み] Gitが無視するdirectoryとdirectory/*の違いは何ですか?
質問
gitでディレクトリの内容を無視するための正しい方法について混乱しています。
私が以下のようなディレクトリ構造を持っていると仮定します。
my_project
|--www
|--1.txt
|--2.txt
|--.gitignore
これを置くと何が違うのか。
www
そして、これは?
www/*
この質問をする理由は、gitでは、ディレクトリが空の場合、gitはそのような空のディレクトリをリポジトリに含めないからです。そこで、ディレクトリの下に追加の.gitkeepファイルを追加して、空にならないようにする、という解決策を試していました。その際、.gitignore ファイルに以下のように記述しています。
www
!*.gitkeep
これはうまくいきません(私の意図は、www以下のすべてのコンテンツを無視し、ディレクトリを維持することです)。しかし、私は以下を試してみてください。
www/*
!*.gitkeep
とすると、うまくいくのです。ということは、この2つのアプローチには何らかの違いがあるのでしょう。
どのように解決するのですか?
各
www
,
www/
と
www/*
.
から基本的に
ドキュメント
と私自身のテストからです。
www
はファイルやディレクトリとのマッチを見つけます。
www/
はディレクトリにのみマッチし、一方
www/*
の中のディレクトリとファイルにマッチします。
www
.
の違いについてだけ説明します。
www/
と
www/*
の違いから、ここでは
www
と
www/
は明らかです。
については
www/
の場合、git はディレクトリを無視します。
www
を無視します。つまり、git は中を見ようともしません。しかし
www/*
の中にあるすべてのファイルやフォルダーをチェックします。
www
の中にあるすべてのファイルやフォルダをチェックし、パターン
*
. git は空のフォルダを追跡しないので、これは同じ結果になるようです。
www
を追跡しないからです。そして実際、OPのケースと同じように
www/
または
www/*
を単独で使用することができます。しかし、他のルールと組み合わされた場合は違いが生じます。
例えば、もし私たちが単に
www/1.txt
のみを含み、それ以外は無視したい場合はどうでしょう。
www
?
次のような
.gitignore
は動作しません。
www/
!www/1.txt
一方、以下の
.gitignore
は動作しますが、なぜでしょうか?
www/*
!www/1.txt
前者の場合、git はディレクトリを無視して
www
というディレクトリを無視し、その中を探そうともしません。
www/1.txt
を再びインクルードするために内部を探すことさえしません。最初のルールは、親ディレクトリである
www
を除外しますが
www/1.txt
となり、結果的に
www/1.txt
は " になり得ない。
が再び含まれる
"。
しかし、後者の場合、git は最初に
www
の下にあるすべてのファイルやフォルダを無視し、そのうちのひとつを再びインクルードします。
www/1.txt
.
この例では、ドキュメントの次の行が参考になるでしょう。
オプションの接頭辞 "!" は、パターンを否定します。 前のパターンによって除外されたマッチするファイルは、再び含まれるようになります。ただし そのファイルの親ディレクトリが除外されている場合、そのファイルを再び含めることはでき を除外することはできません。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] ローカルの Git リポジトリが元々クローンされた URL を特定するにはどうすればよいですか。
-
[解決済み] git add -A」と「git add .」の違い。
-
[解決済み] .gitignoreと.gitkeepの違いは何ですか?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】Git リポジトリに空のディレクトリを追加するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解决[email protected]。パーミッションが拒否されました (publickey)。リモートリポジトリから読み取れませんでした
-
fatal: リモート参照マスタが見つかりませんでした。
-
gpg: "xxx" をスキップ: 秘密鍵のための1つの解決策が利用できない
-
Git学習まとめ(2)コミットには何も追加されていないが、未追跡のファイルは存在する
-
git push issues
-
[解決済み] Jenkins Pipeline Git SCM を認証情報でチェックアウトする?
-
[解決済み] stash@{1}は曖昧?
-
[解決済み] 新サーバーへのGitプッシュ/クローン
-
[解決済み] Gitでは、これらの言葉はどのような意味ですか?リポジトリ、フォーク、ブランチ、クローン、トラック?
-
[解決済み] gitで、stashを適用せずに、追跡されていないstashedファイルを表示する方法はありますか?