Pathspec git dan cara menggunakannya
Dalam perintah git<pathspec></pathspec>
Parameter: Penggunaan fleksibel fungsi Git yang kuat
Semasa mengkaji dokumentasi arahan git, anda mungkin dapati bahawa banyak arahan mengandungi<pathspec></pathspec>
Pilihan. Pada mulanya, anda mungkin fikir ini hanyalah pernyataan teknikal "jalan" dan hanya boleh menerima direktori dan nama fail. Walau bagaimanapun, selepas pemahaman yang lebih mendalam, anda akan mendapati bahawa arahan git<pathspec></pathspec>
Lebih kuat daripada yang anda fikirkan.
<pathspec></pathspec>
Ia adalah satu mekanisme yang digunakan oleh Git untuk mengehadkan skop perintah Git, yang mengehadkan skop pelaksanaan perintah ke subset repositori. Walaupun anda tidak menyedarinya, anda mungkin sudah menggunakannya<pathspec></pathspec>
Sekarang. Sebagai contoh, dalam perintah git add README.md
,<pathspec></pathspec>
Ia README.md
. tetapi<pathspec></pathspec>
Keupayaan untuk mencapai operasi yang lebih halus dan fleksibel.
kajian<pathspec></pathspec>
Kelebihannya adalah dengan ketara meningkatkan fungsi perintah banyak git. Sebagai contoh, dengan git add
anda hanya boleh menambah fail dalam satu direktori; Dengan git diff
anda boleh menyemak perubahan yang dibuat untuk memfailkan nama dengan hanya lanjutan .scss
; Anda juga boleh menggunakan git grep
untuk mencari semua fail, tetapi tidak termasuk fail dalam direktori /dist
.
juga,<pathspec></pathspec>
Membantu menulis lebih banyak alias git umum. Sebagai contoh, saya mempunyai alias yang dipanggil git todo
yang akan mencari rentetan "todo" dalam semua fail repositori saya. Walau bagaimanapun, saya mahu ia memaparkan semua contoh rentetan, walaupun mereka tidak berada dalam direktori kerja semasa saya. gunakan<pathspec></pathspec>
, Kita boleh mencapai ini.
Fail atau direktori
gunakan<pathspec></pathspec>
Cara yang paling langsung ialah menggunakan direktori dan/atau nama fail. Sebagai contoh, menggunakan git add
, anda boleh melakukan perkara berikut : .
, src/
dan README
adalah arahan untuk setiap arahan<pathspec></pathspec>
.
tambah git. # Tambahkan direktori kerja semasa (CWD) git tambah src/ # tambah src/ direktori git tambah readme # tambah fail readme sahaja
Anda juga boleh menambah beberapa arahan<pathspec></pathspec>
:
Git Tambah Src/ Server/ # Tambah Src/ dan Server/ Direktori
Kadang -kadang, anda mungkin melihat arahan<pathspec></pathspec>
Terdapat --
di hadapannya. Ini digunakan untuk menghapuskan<pathspec></pathspec>
kekaburan antara bahagian lain perintah.
Kad liar
Sebagai tambahan kepada fail dan direktori, anda juga boleh menggunakan *
, ?
, dan []
untuk memadankan corak. Simbol *
digunakan sebagai kad liar, dan ia akan dipadankan /
di jalan - dengan kata lain, ia akan mencari subdirektori.
git log '*.js' # Rakam semua .js fail dalam cwd dan subdirectory git log '.*' Rakam semua 'tersembunyi' fail dan direktori di cwd git log '*/.*'
Petikan sangat penting, terutamanya apabila menggunakan *
. Mereka menghalang cangkang anda (seperti Bash atau ZSH) daripada memanjangkan kad liar dengan sendirinya. Sebagai contoh, mari kita lihat bagaimana git ls-files
menyenaraikan fail dengan dan tanpa petikan.
# Sampel Struktur Direktori# #. # ├── Package-lock.json # ├── Package.json # └── Data # ├── bar.json # ├── baz.json # └── Foo.json git ls-files *.json # pakej-lock.json # pakej.json git ls-files '*.json' # data/bar.json # data/baz.json # data/foo.json # pakej-lock.json # pakej.json
Oleh kerana shell meluas *
dalam perintah pertama, arahan yang diterima oleh git ls-files
adalah git ls-files package-lock.json package.json
. Petikan Pastikan git adalah parti yang memanjangkan kad liar.
Anda juga boleh menggunakan ?
watak sebagai kad liar untuk satu watak. Sebagai contoh, untuk memadankan fail MP3 atau MP4, anda boleh melakukan perkara berikut.
git ls-files '*.mp?'
Ekspresi pendakap persegi
Anda juga boleh menggunakan "ekspresi pendakap persegi" untuk memadankan aksara individu dalam koleksi. Sebagai contoh, jika anda ingin memadankan fail TypeScript atau JavaScript, anda boleh menggunakan [tj]
. Ini akan sepadan dengan t
atau j
.
git ls-files '*. [tj] s'
Ini akan sepadan dengan fail .ts
atau fail .js
. Selain menggunakan aksara, anda juga boleh merujuk kepada set aksara tertentu dalam ekspresi pendakap persegi. Sebagai contoh, anda boleh menggunakan [:digit:]
dalam ekspresi kurungan persegi untuk memadankan mana -mana nombor perpuluhan, atau gunakan [:space:]
untuk memadankan mana -mana watak ruang.
git ls-files '*.mp [[: digit:]]' # mp0, mp1, mp2, mp3, ..., mp9 git ls-files '*[[: ruang:]*' # sepadan dengan mana-mana laluan yang mengandungi ruang
Untuk mengetahui lebih lanjut mengenai ekspresi kurungan persegi dan cara menggunakannya, lihat manual GNU.
Tandatangan sihir
<pathspec></pathspec>
Juga mempunyai alat khas yang disebut "Signature Magic" yang boleh digunakan untuk anda<pathspec></pathspec>
Buka kunci beberapa ciri tambahan. "Tandatangan sihir" ini diluluskan<pathspec></pathspec>
Permulaan :(signature)
dipanggil. Sekiranya anda tidak faham, jangan risau: Beberapa contoh harus membantu.
Atas
Tandatangan top
memberitahu Git untuk memadankan corak dari akar repositori git dan bukannya direktori kerja semasa. Anda juga boleh menggunakan singkatan /
bukan :(top)
.
git ls-files ': (atas)*. js' git ls-files ':/*. JS' # singkatan
Ini menyenaraikan semua fail dalam repositori dengan lanjutan .js
. Gunakan tandatangan top
, yang boleh dipanggil dalam mana -mana subdirektori di repositori. Saya dapati ini sangat berguna apabila menulis alias git generik!
Git Config-Global aliass.js 'ls-files-': (atas)*. Js ''
Anda boleh menggunakan git js
untuk mendapatkan senarai semua fail JavaScript dalam projek anda di mana sahaja di repositori anda.
icase
Tandatangan icase
memberitahu Git untuk mengabaikan kes apabila sepadan. Ini sangat berguna jika anda tidak peduli dengan kes nama fail - contohnya, ia sangat berguna untuk memadankan fail JPG, yang kadang -kadang menggunakan jpg lanjutan huruf besar.
git ls-files ': (icase)*. jpg'
harfiah
Tandatangan literal
memberitahu Git untuk merawat semua watak secara harfiah. Pilihan ini boleh digunakan jika anda ingin merawat watak seperti *
dan ?
sebagai diri mereka sendiri daripada wildcards. Kecuali nama fail repositori anda mengandungi *
atau ?
, Saya tidak fikir tandatangan ini akan digunakan dengan kerap.
log git ': (literal)*. js' # mengembalikan log fail '*.js'
glob
Semasa saya mula belajar<pathspec></pathspec>
Apabila saya perasan bahawa wildcards bekerja secara berbeza daripada yang biasa saya lakukan. Biasanya, saya melihat satu asterisk *
sebagai kad liar yang tidak sepadan dengan apa -apa dalam direktori, sementara asterisk berterusan ( **
) sebagai "deep" wildcard akan sepadan dengan nama dalam direktori. Jika anda lebih suka gaya liar ini, anda boleh menggunakan tandatangan Magic glob
!
Ini sangat berguna jika anda ingin mempunyai lebih banyak kawalan berbutir ke atas bagaimana struktur direktori projek dicari. Sebagai contoh, mari kita lihat bagaimana kedua-dua git ls-files
ini mencari projek React.
git ls-files ': (glob) src/komponen/*/*. jsx' # "atas" komponen jsx git ls-files ': (glob) src/komponen/**/*. jsx' # "semua" komponen jsx
attr
Git boleh menetapkan "Properties" untuk fail tertentu. Anda boleh menetapkan sifat -sifat ini menggunakan fail .gitattributes
.
<code># .gitattributes src/components/vendor/* vendored # 设置“vendored”属性src/styles/vendor/* vendored</code>
Gunakan tandatangan sihir attr
untuk anda<pathspec></pathspec>
Tetapkan keperluan atribut. Sebagai contoh, kami mungkin mahu mengabaikan dokumen di atas dari vendor.
git ls-files ': (attr :! vendored)*. js' # cari untuk fail js yang tidak vendored git ls-files ': (attr: vendored)*.
tidak termasuk
Akhirnya, terdapat tandatangan sihir " exclude
" (disingkat sebagai :!
Atau :^
). Tandatangan ini berfungsi secara berbeza daripada tandatangan sihir yang lain. Menyelesaikan semua yang lain<pathspec></pathspec>
Selepas itu, semua tanda tangan exclude
akan dihuraikan<pathspec></pathspec>
, dan kemudian keluarkannya dari jalan yang dikembalikan. Sebagai contoh, anda boleh mencari semua fail .js
semasa tidak termasuk fail ujian .spec.js
.
git grep 'foo' - '*.js' ': (tidak termasuk)*. spec.js' # cari fail .js, tidak termasuk .spec.js git grep 'foo' - '*.js' ':!*. spec.js'. # Singkatan yang sama seperti di atas
Tandatangan gabungan
Tidak ada yang dapat mengehadkan anda untuk satu<pathspec></pathspec>
Gunakan tandatangan sihir berganda! Anda boleh menggunakan pelbagai tandatangan dengan memisahkan kata -kata sihir anda dengan koma dalam kurungan. Sebagai contoh, jika anda ingin memadankan dari bahagian bawah repositori (menggunakan top
), kes-insensitif (menggunakan icase
), hanya menggunakan kod yang ditulis (menggunakan attr
untuk mengabaikan fail vendor), dan menggunakan Wildcards gaya GLOB (menggunakan glob
), anda boleh melakukan perkara berikut.
git ls-files-': (atas, icase, glob, attr :! vendored) src/komponen/*/*. jsx'
Kedua -dua tandatangan sihir yang anda tidak dapat menggabungkan adalah glob
dan literal
, kerana kedua -duanya mempengaruhi bagaimana git mengendalikan kad liar. Ini disebut dalam Glosari Git dan mungkin ayat kegemaran saya yang saya baca dalam mana -mana dokumen.
Glob Magic tidak serasi dengan sihir harfiah.
<pathspec></pathspec>
Ia adalah bahagian penting dari banyak arahan Git, tetapi fleksibilitinya tidak dapat dilihat dengan segera. Dengan mempelajari cara menggunakan tanda liar dan tandatangan sihir, anda boleh menggandakan keupayaan anda pada baris arahan Git.
Atas ialah kandungan terperinci Pathspec git dan cara menggunakannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ia ' s! Tahniah kepada pasukan Vue untuk menyelesaikannya, saya tahu ia adalah usaha besar dan lama datang. Semua dokumen baru juga.

Saya mempunyai seseorang yang menulis dengan soalan yang sangat legit ini. Lea hanya blog tentang bagaimana anda boleh mendapatkan sifat CSS yang sah dari penyemak imbas. That ' s seperti ini.

Jika kita perlu menunjukkan dokumentasi kepada pengguna secara langsung dalam editor WordPress, apakah cara terbaik untuk melakukannya?

Pada hari yang lain, saya melihat sedikit ini sangat indah dari laman web Corey Ginnivan di mana koleksi kad timbunan di atas satu sama lain semasa anda menatal.

Terdapat beberapa aplikasi desktop ini di mana matlamat menunjukkan laman web anda pada dimensi yang berbeza pada masa yang sama. Oleh itu, anda boleh menulis

CSS Grid adalah koleksi sifat yang direka untuk menjadikan susun atur lebih mudah daripada yang pernah berlaku. Seperti apa -apa, ada sedikit keluk pembelajaran, tetapi grid adalah

Saya melihat Font Google melancarkan reka bentuk baru (tweet). Berbanding dengan reka bentuk besar yang terakhir, ini terasa lebih berulang. Saya hampir tidak dapat memberitahu perbezaannya
