検索

git pathspecsとそれらの使用方法

gitコマンドで<pathspec></pathspec>パラメーター:Gitの強力な機能の柔軟な使用

gitコマンドのドキュメントを確認するとき、多くのコマンドが含まれていることに気付くかもしれません<pathspec></pathspec>オプション。最初は、これは単なる「パス」の技術的な声明であり、ディレクトリとファイル名のみを受け入れることができると思うかもしれません。しかし、より深い理解の後、あなたはgitコマンドが<pathspec></pathspec>あなたが思っているよりもはるかに強い。

<pathspec></pathspec>これは、GITコマンドの範囲を制限するためにGITで使用されるメカニズムであり、コマンドの実行範囲をリポジトリのサブセットに制限します。気付いていなくても、すでに使用している可能性があります<pathspec></pathspec>今。たとえば、コマンドgit add README.md<pathspec></pathspec>README.mdです。しかし<pathspec></pathspec>より洗練された柔軟な操作を実現する能力。

勉強<pathspec></pathspec>利点は、多くのGITコマンドの機能を大幅に向上させることです。たとえば、 git add使用すると、単一のディレクトリにファイルを追加するだけです。 git diff使用すると、拡張.scssのみでファイル名に加えられた変更を確認できます。 git grepを使用してすべてのファイルを検索することもできますが、 /distディレクトリにファイルを除外することもできます。

また、<pathspec></pathspec>より一般的なGITエイリアスを書くのに役立ちます。たとえば、すべてのリポジトリファイルで文字列「TODO」を検索するgit todoというエイリアスがあります。ただし、現在のワーキングディレクトリにない場合でも、文字列のすべてのインスタンスを表示したいと考えています。使用<pathspec></pathspec>、これを達成することができます。

ファイルまたはディレクトリ

使用<pathspec></pathspec>最も直接的な方法は、ディレクトリおよび/またはファイル名を使用することです。たとえば、 git add使用して、次のことを行うことができます.src/およびREADME 、それぞれ各コマンドのコマンドです<pathspec></pathspec>

 git add。 #現在の作業ディレクトリ(CWD)を追加
git add src/#src/ directory git add readme#readmeファイルのみを追加する

1つのコマンドに複数を追加することもできます<pathspec></pathspec>

 git add src/ server/#src/ and server/ directoriesを追加

時々、コマンドが表示される場合があります<pathspec></pathspec>その前に--があります。これは排除するために使用されます<pathspec></pathspec>コマンドの他の部分の間のあいまいさ。

ワイルドカード

ファイルやディレクトリに加えて、 *?使用することもできます。 、および[]パターンに合わせます。 *シンボルはワイルドカードとして使用され、パスと/します。つまり、サブディレクトリを検索します。

 git log '*.js'#cwdおよびsubdirectories git log 'のすべての.jsファイルを録画します。

特に*を使用する場合、引用は非常に重要です。彼らはあなたのシェル(BashやZSHなど)がそれ自体でワイルドカードを拡張するのを防ぎます。たとえば、 git ls-files見積もりの​​有無にかかわらずファイルをどのようにリストしているかを見てみましょう。

 #サンプルディレクトリ構造#
#。
#├| −紅 - パッケージlock.json
#├)
#└| −リンーデータ
#├├。-bar.json
#├├。-baz.json
#└└。-foo.json

git ls-files *.json

#package-lock.json
#package.json

git ls-files '*.json'

#データ/bar.json
#データ/baz.json
#data/foo.json
#package-lock.json
#package.json

シェルは最初のコマンドで*されるため、 git ls-filesで受信したコマンドはgit ls-files package-lock.json package.jsonです。 Quotes Gitがワイルドカードを拡張するパーティーであることを確認してください。

あなたも使用することができますか?単一のキャラクターのワイルドカードとしてのキャラクター。たとえば、MP3またはMP4ファイルを一致させるには、次のことを行うことができます。

 git ls-files '*.mp?'

四角いブラケット式

「四角いブラケット式」を使用して、コレクション内の個々の文字を一致させることもできます。たとえば、TypeScriptまたはJavaScriptファイルを一致させる場合は、 [tj]を使用できます。これはtまたはjと一致します。

 git ls-files '*。[tj] s'

これは.tsファイルまたは.jsファイルと一致します。文字の使用に加えて、スクエアブラケット式の特定の文字セットを参照することもできます。たとえば、四角いブラケット式で[:digit:]を使用して10進数を一致させるか、 [:space:]を使用してスペース文字を一致させることができます。

 git ls-files '*.mp [[:digit:]'#mp0、mp1、mp2、mp3、...、mp9
git ls-files '*[[:space:]]*'#スペースを含む任意のパスを一致させます

四角いブラケットの表現とそれらの使用方法の詳細については、GNUマニュアルをご覧ください。

魔法の署名

<pathspec></pathspec>また、あなたのために使用できる「魔法の署名」と呼ばれる特別なツールもあります<pathspec></pathspec>いくつかの追加機能のロックを解除します。これらの「魔法の署名」は通過します<pathspec></pathspec>:(signature)の始まりが呼び出されます。わからない場合は、心配しないでください。いくつかの例が役立つはずです。

トップ

top署名は、現在の作業ディレクトリではなく、Gitリポジトリのルートからパターンを一致させるようにGitに指示します。略語/代わりに使用することもできます:(top)

 git ls-files ':(上)*。Js'
git ls-files ':/*。js'#abbreviation

これにより、 .js拡張機能を備えたリポジトリ内のすべてのファイルがリストされます。リポジトリ内の任意のサブディレクトリで呼び出すことができるtop署名を使用します。これは、一般的なGitエイリアスを書くときに特に役立ちました!

 git config -global alias.js 'ls-files-' :(トップ)*。js ''

git jsを使用して、プロジェクト内のすべてのJavaScriptファイルのリストをリポジトリのどこでも取得できます。

icase

icase署名は、一致するときにケースを無視するようにGITに指示します。これは、ファイル名のケースを気にしない場合に非常に便利です。たとえば、大文字の拡張機能JPGを使用するJPGファイルを一致させるのに非常に役立ちます。

 git ls-files ':( icase)*。jpg'

リテラル

literal署名は、すべてのキャラクターを文字通り扱うようにGitに指示します。このオプションは、キャラクターを* and ?のように扱いたい場合に使用できます。ワイルドカードではなく自分自身として。リポジトリのファイル名に*または? 、この署名が頻繁に使用されるとは思わない。

 git log ':(リテラル)*。js'#ファイルのログを返します '*.js'

グローブ

私が学び始めたとき<pathspec></pathspec>ワイルドカードが以前とは違って機能していることに気付いたとき。通常、私は単一のアスタリスク*をディレクトリ内の何も一致しないワイルドカードと見なしますが、「深い」ワイルドカードとしての連続アスタリスク( ** )は、ディレクトリの名前と一致します。このスタイルのワイルドカードを好む場合は、 glob Magic Signaturesを使用できます!

これは、プロジェクトディレクトリ構造の検索方法をより詳細に制御したい場合に非常に便利です。たとえば、これら2つのgit ls-files Reactプロジェクトをどのように検索するかを見てみましょう。

 git ls-files ':(glob)src/components/*/*。jsx'# "top" jsxコンポーネントgit ls-files ':(glob)src/components/**/*。jsx'# "すべて" jsxコンポーネント

attr

GITは、特定のファイルの「プロパティ」を設定できます。 .gitattributesファイルを使用してこれらのプロパティを設定できます。

 <code># .gitattributes src/components/vendor/* vendored # 设置“vendored”属性src/styles/vendor/* vendored</code>

あなたのためにattr magic署名を使用します<pathspec></pathspec>属性要件を設定します。たとえば、ベンダーから上記のドキュメントを無視することをお勧めします。

 git ls-files ':(attr:!vendored)*。JS'#非ベンダーのJSファイルの検索git ls-files ':( attr:vendored)*。js'#ベンダーのjsファイルの検索

除外します

最後に、「 exclude 」の魔法の署名があります(as :! or :^ )。この署名は、他の魔法の署名とは異なる方法で機能します。他のすべてを解決します<pathspec></pathspec>その後、すべてのexclude署名が解析されます<pathspec></pathspec>、そして、返されたパスからそれを削除します。たとえば、 .spec.jsテストファイルを除外しながら、すべての.jsファイルを検索できます。

 git grep 'foo'  -  '*.js' ':(除外)*。spec.js'#.jsファイルを検索、.spec.jsを除外
git grep 'foo'  -  '*.js' ':!*。spec.js'。 #上記と同じ略語

コンビネーション署名

あなたをシングルに制限するものは何もありません<pathspec></pathspec>複数の魔法の署名を使用してください!魔法の言葉を括弧内のコンマで分離することで、複数の署名を使用できます。たとえば、リポジトリの下部( topを使用)、ケース非感受性( icaseを使用)、著者コードのみ( attrを使用してベンダーファイルを無視する)を使用する場合、GLOBスタイルのワイルドカード( globを使用)を使用する場合、次のことを行うことができます。

 git ls-files- ':(トップ、icase、glob、attr:!vendored)src/components/*/*。jsx'

組み合わせることができない2つの魔法の署名は、 globliteralです。これはGit Glossaryで言及されており、おそらくどのドキュメントでも読んだ私のお気に入りの文です。

グローブマジックは、文字通りの魔法と両立しません。

<pathspec></pathspec>これは多くのGITコマンドの不可欠な部分ですが、その柔軟性はすぐには見えません。ワイルドカードと魔法の署名の使用方法を学ぶことで、Gitコマンドラインで能力を2倍にすることができます。

以上がgit pathspecsとそれらの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
CSSアニメーション:それらを作成するのは難しいですか?CSSアニメーション:それらを作成するのは難しいですか?May 09, 2025 am 12:03 AM

cssanimationsArenotintinlentyhardbutrepracticeanderstanding ofcsspropertiesandtimingfunctions.1)

@KeyFrames CSS:最も使用されているトリック@KeyFrames CSS:最も使用されているトリックMay 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversitility andpowerincreatingsmoothcssanimations.keytricksinclude:1)defingsmoothtransitionsbetweenstates、2)AnimatingMultipleProperiessimally、3)3)bendorprefixesforbrows -compativity、4)組み合わせwithjavasfo

CSSカウンター:自動番号の包括的なガイドCSSカウンター:自動番号の包括的なガイドMay 07, 2025 pm 03:45 PM

csScounterSareSareusedTomageautomaticinginginwebdesigns.1)それらは、コンテンツ、リスト、および積極的なものを使用することができます

スクロール駆動型のアニメーションを使用したモダンなスクロールシャドウスクロール駆動型のアニメーションを使用したモダンなスクロールシャドウMay 07, 2025 am 10:34 AM

特にモバイルデバイスでは、スクロールシャドウを使用することは、Chrisが以前にカバーした微妙なUXです。 Geoffは、アニメーションタイムラインプロパティを使用する新しいアプローチをカバーしました。これがさらに別の方法です。

画像マップを再検討します画像マップを再検討しますMay 07, 2025 am 09:40 AM

簡単に復習してみましょう。画像マップはHTML 3.2に戻ります。ここで、最初にサーバー側マップを使用してから、マップとエリア要素を使用して画像上でクリック可能な領域を定義したクライアント側マップをマップしました。

開発者:すべての開発者の調査開発者:すべての開発者の調査May 07, 2025 am 09:30 AM

State of Devsの調査は現在、参加に対して開かれており、以前の調査とは異なり、コードを除くすべてをカバーしています:キャリア、職場だけでなく、健康、趣味などもあります。 

CSSグリッドとは何ですか?CSSグリッドとは何ですか?Apr 30, 2025 pm 03:21 PM

CSSグリッドは、複雑で応答性の高いWebレイアウトを作成するための強力なツールです。設計を簡素化し、アクセシビリティを向上させ、古い方法よりも多くの制御を提供します。

CSS Flexboxとは何ですか?CSS Flexboxとは何ですか?Apr 30, 2025 pm 03:20 PM

記事では、レスポンシブデザインにおけるスペースの効率的なアラインメントと分布のためのレイアウト方法であるCSS FlexBoxについて説明します。 FlexBoxの使用量を説明し、CSSグリッドと比較し、ブラウザのサポートを詳細に説明します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。