recherche
Maisoninterface Webtutoriel CSSGit PathSpecs et comment les utiliser

Git PathSpecs et comment les utiliser

Dans la commande git<pathspec></pathspec> Paramètres: utilisation flexible des fonctions puissantes de Git

Lors de l'examen de la documentation de commande GIT, vous remarquerez peut-être que de nombreuses commandes contiennent<pathspec></pathspec> Options. Au début, vous pourriez penser que ce n'est qu'un énoncé technique de "chemin" et ne peut accepter que des répertoires et des noms de fichiers. Cependant, après une compréhension plus profonde, vous constaterez que la commande git<pathspec></pathspec> Beaucoup plus fort que vous ne le pensez.

<pathspec></pathspec> Il s'agit d'un mécanisme utilisé par GIT pour limiter la portée des commandes GIT, qui limite la portée d'exécution des commandes à un sous-ensemble du référentiel. Même si vous ne le réalisez pas, vous l'utilisez peut-être déjà<pathspec></pathspec> Maintenant. Par exemple, dans la commande git add README.md ,<pathspec></pathspec> C'est README.md . mais<pathspec></pathspec> Capacité à réaliser des opérations plus raffinées et flexibles.

étude<pathspec></pathspec> L'avantage est qu'il améliore considérablement la fonctionnalité de nombreuses commandes GIT. Par exemple, avec git add vous pouvez simplement ajouter des fichiers dans un seul répertoire; Avec git diff vous pouvez vérifier les modifications apportées aux noms de fichiers avec une extension .scss uniquement; Vous pouvez également utiliser git grep pour rechercher tous les fichiers, mais exclure les fichiers dans le répertoire /dist .

aussi,<pathspec></pathspec> Aide à écrire un alias Git plus général. Par exemple, j'ai un alias appelé git todo qui recherchera la chaîne "todo" dans tous mes fichiers de référentiel. Cependant, je veux qu'il affiche toutes les instances de la chaîne, même si elles ne sont pas dans mon répertoire de travail actuel. utiliser<pathspec></pathspec> , nous pouvons y parvenir.

Fichier ou répertoire

utiliser<pathspec></pathspec> Le moyen le plus direct consiste à utiliser le nom du répertoire et / ou du fichier. Par exemple, en utilisant git add , vous pouvez effectuer ce qui suit : . , src/ et README sont les commandes de chaque commande, respectivement<pathspec></pathspec> .

 git add. # Ajouter le répertoire de travail actuel (CWD)
git ajouter src / # ajouter src / répertoire git ajouter readme # ajouter uniquement les fichiers readme

Vous pouvez également ajouter plusieurs commandes à une seule commande<pathspec></pathspec> :

 Git Ajouter Src / Server / # Ajouter SRC / et Server / répertoires

Parfois, vous pouvez voir des commandes<pathspec></pathspec> Il y a un -- devant lui. Ceci est utilisé pour éliminer<pathspec></pathspec> ambiguïté entre les autres parties de la commande.

Magazine

En plus des fichiers et répertoires, vous pouvez également utiliser * , ? et [] pour correspondre aux modèles. Le symbole * est utilisé comme joker, et il correspondra / sur le chemin - en d'autres termes, il recherchera des sous-répertoires.

 Git log '* .js' # Enregistrez tous les fichiers .js dans les fichiers cwd et sous-répertoires Git Log '. *' # Enregistrer tous les fichiers et répertoires cachés dans CWD Git Log '* /.

Les citations sont très importantes, surtout lorsque vous utilisez * . Ils empêchent votre coquille (comme Bash ou Zsh) d'étendre les caractères génériques en soi. Par exemple, voyons comment git ls-files répertorie les fichiers avec et sans devis.

 # Exemple de structure de répertoire #
#.
# ├fiques-package-Lock.json
# ├── package.json
# └── Données
# ├── bar.json
# ├── baz.json
# └── foo.json

git ls-files * .json

# package-lock.json
# package.json

git ls-files '* .json'

# data / bar.json
# data / baz.json
# data / foo.json
# package-lock.json
# package.json

Étant donné que le shell s'étend * dans la première commande, la commande reçue par git ls-files est git ls-files package-lock.json package.json . Les citations s'assurent que Git est la fête qui étend les jokers.

Vous pouvez également utiliser ? Personnages comme des jokers pour un seul personnage. Par exemple, pour faire correspondre les fichiers MP3 ou MP4, vous pouvez effectuer ce qui suit.

 git ls-files '* .mp?'

Expression du crochet

Vous pouvez également utiliser des "expressions de crochet" pour correspondre aux personnages individuels d'une collection. Par exemple, si vous souhaitez faire correspondre les fichiers TypeScript ou JavaScript, vous pouvez utiliser [tj] . Cela correspondra t ou j

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

Cela correspondra au fichier .ts ou au fichier .js . En plus d'utiliser des caractères, vous pouvez également vous référer à certains ensembles de caractères dans les expressions de carré. Par exemple, vous pouvez utiliser [:digit:] dans les expressions de la crochet pour correspondre à n'importe quel numéro décimal, ou utiliser [:space:] pour correspondre à n'importe quel caractère spatial.

 git ls-files '* .mp [[: chiffre:]]' # # mp0, mp1, mp2, mp3, ..., mp9
git ls-files '* [[: espace:]] *' # correspond à tout chemin contenant des espaces

Pour en savoir plus sur les expressions de crochets et comment les utiliser, consultez le manuel GNU.

Signature magique

<pathspec></pathspec> A également un outil spécial appelé "Magic Signature" qui peut être utilisé pour votre<pathspec></pathspec> Déverrouillez certaines fonctionnalités supplémentaires. Ces "signatures magiques" sont passées<pathspec></pathspec> Le début du :(signature) est appelé. Si vous ne comprenez pas, ne vous inquiétez pas: certains exemples devraient vous aider.

haut

top indique à Git de correspondre au modèle de la racine du référentiel GIT au lieu du répertoire de travail actuel. Vous pouvez également utiliser l'abréviation / au lieu de :(top) .

 git ls-files ': (en haut) *. js'
git ls-files ': / *. js' # abréviation

Cela répertorie tous les fichiers du référentiel avec l'extension .js . Utilisez la signature top , qui peut être appelée dans n'importe quelle sous-répertoire du référentiel. J'ai trouvé cela particulièrement utile lors de l'écriture d'alias génériques GIT!

 git config --global aliaS.js 'ls-files -': (top) *. js ''

Vous pouvez utiliser git js pour obtenir une liste de tous les fichiers JavaScript dans votre projet n'importe où dans votre référentiel.

icase

icase dit à Git d'ignorer le cas lors de la correspondance. Ceci est très utile si vous ne vous souciez pas du cas des noms de fichiers - par exemple, il est très utile pour faire correspondre les fichiers JPG, qui utilisent parfois l'extension majuscule JPG.

 git ls-files ': (iase) *. jpg'

littéral

La signature literal dit à Git de traiter littéralement tous les personnages. Cette option peut être utilisée si vous souhaitez traiter des personnages comme * et ? comme eux-mêmes plutôt que des caractères génériques. Sauf si le nom de fichier de votre référentiel contient * ou ? , Je ne pense pas que cette signature soit fréquemment utilisée.

 Git log ': (littéral) *. JS' # Renvoie le journal du fichier '* .js'

globe

Quand j'ai commencé à apprendre<pathspec></pathspec> Quand j'ai remarqué que les jokers fonctionnent différemment du fait, je suis habitué. Habituellement, je vois un seul astérisque * comme un joker qui ne correspond à rien dans le répertoire, tandis qu'un astérisque continu ( ** ) en tant que joker "profond" correspondra au nom dans le répertoire. Si vous préférez ce style de joker, vous pouvez utiliser glob Magic Signatures!

Ceci est très utile si vous voulez avoir un contrôle plus granulaire sur la façon dont la structure du répertoire de projet est recherchée. Par exemple, voyons comment ces deux git ls-files recherchent des projets React.

 git ls-files ': (glob) src / composants / * / *. jsx' # "top" composant jsx git ls-files ': (glob) src / composants / ** / *. jsx' # "all" jsx composants

att

GIT peut définir des "propriétés" pour des fichiers spécifiques. Vous pouvez définir ces propriétés à l'aide du fichier .gitattributes .

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

Utilisez des signatures magiques attr pour votre<pathspec></pathspec> Définir les exigences d'attribut. Par exemple, nous pouvons vouloir ignorer les documents ci-dessus du vendeur.

 git ls-files ': (att:! Vendoré) *. JS' # Rechercher des fichiers js non vendus

exclure

Enfin, il y a la signature magique de " exclude " (abrégé comme :! Ou :^ ). Cette signature fonctionne différemment des autres signatures magiques. Résoudre tous les autres<pathspec></pathspec> Après cela, toutes les signatures exclude seront analysées<pathspec></pathspec> , puis retirez -le du chemin retourné. Par exemple, vous pouvez rechercher tous les fichiers .js tout en excluant les fichiers de test .spec.js .

 git grep 'foo' - '* .js' ': (exclure) *. Spec.js' # Rechercher des fichiers .js, exclure .spec.js
git grep 'foo' - '* .js' ':! *. spec.js'. # La même abréviation que ci-dessus

Signature combinée

Il n'y a rien pour vous limiter à un seul<pathspec></pathspec> Utilisez plusieurs signatures magiques! Vous pouvez utiliser plusieurs signatures en séparant vos mots magiques avec des virgules entre parenthèses. Par exemple, si vous souhaitez correspondre au bas du référentiel (en utilisant top ), insensible à la casse (en utilisant icase ), uniquement en utilisant le code l'auteur (en utilisant attr pour ignorer les fichiers du fournisseur) et en utilisant des wildcards de style glob (en utilisant glob ), vous pouvez effectuer ce qui suit.

 git ls-files - ': (top, iase, glob, att:! vend) src / composants / * / *. jsx'

Les deux signatures magiques que vous ne pouvez pas combiner sont glob et literal , car ils affectent tous les deux la façon dont Git gère les caractères génériques. Ceci est mentionné dans le glossaire Git et c'est peut-être ma phrase préférée que j'ai lue dans n'importe quel document.

Glob Magic est incompatible avec la magie littérale.

<pathspec></pathspec> Il fait partie intégrante de nombreuses commandes GIT, mais sa flexibilité n'est pas immédiatement visible. En apprenant à utiliser les caractères génériques et les signatures magiques, vous pouvez doubler votre capacité sur la ligne de commande GIT.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Quelle est la spécificité de @rules, comme @keyframes et @media?Quelle est la spécificité de @rules, comme @keyframes et @media?Apr 18, 2025 am 11:34 AM

J'ai eu cette question l'autre jour. Ma première pensée est: une question étrange! La spécificité concerne les sélecteurs, et les rubriques ne sont pas des sélecteurs, donc ... non pertinents?

Pouvez-vous nist @media et @Support Queries?Pouvez-vous nist @media et @Support Queries?Apr 18, 2025 am 11:32 AM

Oui, vous le pouvez, et cela n'a pas vraiment d'importance dans quel ordre. Un préprocesseur CSS n'est pas requis. Il fonctionne dans CSS ordinaire.

Buste de cache de gorgée rapideBuste de cache de gorgée rapideApr 18, 2025 am 11:23 AM

Vous devriez à coup sûr définir des en-têtes de cache éloignés sur vos actifs comme CSS et JavaScript (et des images et polices et quoi que ce soit d'autre). Cela dit au navigateur

À la recherche d'une pile qui surveille la qualité et la complexité de CSSÀ la recherche d'une pile qui surveille la qualité et la complexité de CSSApr 18, 2025 am 11:22 AM

De nombreux développeurs écrivent sur la façon de maintenir une base de code CSS, mais peu d'entre eux écrivent sur la façon dont ils mesurent la qualité de cette base de code. Bien sûr, nous avons

Le datalist est destiné à suggérer des valeurs sans appliquer de valeursLe datalist est destiné à suggérer des valeurs sans appliquer de valeursApr 18, 2025 am 11:08 AM

Avez-vous déjà eu un formulaire qui devait accepter un petit texte arbitraire? Comme un nom ou autre chose. C'est exactement à quoi sert. Il y a beaucoup de

Conférence avant à ZurichConférence avant à ZurichApr 18, 2025 am 11:03 AM

Je suis tellement excité de me diriger vers Zurich, en Suisse pour la conférence de Front (j'adore ce nom et URL!). Je n'ai jamais été en Suisse auparavant, donc je suis excité

Construire une application sans serveur complète avec des travailleurs CloudFlareConstruire une application sans serveur complète avec des travailleurs CloudFlareApr 18, 2025 am 10:58 AM

L'un de mes développements préférés dans le développement de logiciels a été l'avènement de Serverless. En tant que développeur qui a tendance à s'enliser dans les détails

Création de routes dynamiques dans une application NuxtCréation de routes dynamiques dans une application NuxtApr 18, 2025 am 10:53 AM

Dans cet article, nous utiliserons une démo de magasin de commerce électronique que j'ai construit et déployé sur Netlify pour montrer comment nous pouvons faire des itinéraires dynamiques pour les données entrantes. C'est assez

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit