찾다
웹 프론트엔드CSS 튜토리얼Git Pathspecs 및 사용 방법

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/ and README 각각 각 명령에 대한 명령입니다.<pathspec></pathspec> .

 git 추가. # 현재 작업 디렉토리 (CWD) 추가
git src/ # 추가 src/ directory git add add readme # readme 파일 추가

여러 명령을 하나의 명령을 추가 할 수도 있습니다<pathspec></pathspec> :

 git src/ server/ # src/ 및 서버/ 디렉토리 추가 추가

때로는 명령을 볼 수 있습니다<pathspec></pathspec>-- 있습니다. 이것은 제거하는 데 사용됩니다<pathspec></pathspec> 명령의 다른 부분 사이의 모호성.

와일드 카드

파일 및 디렉토리 외에도 * ? 패턴과 일치하는 [] . * 기호는 와일드 카드로 사용되며 경로에서 일치 / 일치합니다 . 즉, 하위 디렉터를 검색합니다.

 git log '*.js' # cwd 및 subdirectories git log의 모든 .js 파일을 녹화하십시오.

인용문은 특히 * 사용할 때 매우 중요합니다. 그들은 당신의 껍질 (예 : bash 또는 zsh)이 그 자체로 와일드 카드를 확장하는 것을 방지합니다. 예를 들어, git ls-files 따옴표가 있거나없는 파일을 나열하는 방법을 살펴 보겠습니다.

 # 샘플 디렉토리 구조#
#.
# ock ── Package-lock.json
# j ──) package.json
# └ └ 확장 - 데이터
# j ── 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

첫 번째 명령에서 쉘이 * 확장되므로 git ls-files 가받은 명령은 git ls-files package-lock.json package.json 입니다. 따옴표는 git이 와일드 카드를 확장하는 파티인지 확인하십시오.

당신은 또한 사용할 수 있습니까 ? 단일 캐릭터를위한 와일드 카드로 캐릭터. 예를 들어, MP3 또는 MP4 파일과 일치하려면 다음을 수행 할 수 있습니다.

 git ls-files '*.mp?'

사각형 브래킷 표현

"Square Bracket Expressions"를 사용하여 컬렉션의 개별 문자와 일치 할 수도 있습니다. 예를 들어, TypeScript 또는 JavaScript 파일을 일치하려면 [tj] 사용할 수 있습니다. 이것은 t 또는 j 와 일치합니다.

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

.ts 파일 또는 .js 파일과 일치합니다. 문자를 사용하는 것 외에도 사각형 브래킷 표현식의 특정 문자 세트를 참조 할 수도 있습니다. 예를 들어, 사각형 브래킷 표현식으로 [:digit:] 사용하여 소수점 숫자와 일치하거나 [:space:] 사용하여 공간 문자와 일치 할 수 있습니다.

 git ls-files '*.mp [[: digit :]]' # mp0, mp1, mp2, mp3, ..., mp9
git ls-files '*[[: space :]]*' # 공간이 포함 된 모든 경로와 일치합니다

사각형 브래킷 표현식 및 사용 방법에 대한 자세한 내용은 GNU 매뉴얼을 확인하십시오.

마법 서명

<pathspec></pathspec> 또한 "Magic Signature"라는 특수 도구가 있습니다.<pathspec></pathspec> 추가 기능을 잠금 해제하십시오. 이 "마법 서명"은 통과됩니다<pathspec></pathspec> :(signature) 의 시작이 호출됩니다. 이해하지 못하면 걱정하지 마십시오. 몇 가지 예가 도움이 될 것입니다.

맨 위

top 서명은 GIT에게 현재 작업 디렉토리 대신 git 저장소의 루트에서 패턴과 일치하도록 지시합니다. :(top) 대신 약어 / 사용할 수도 있습니다.

 git ls-files ': (상단)*. js'
git ls-files ':/*. js' # 약어

.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에게 모든 캐릭터를 문자 그대로 대우라고 지시합니다. 이 옵션은 * 와 같은 문자를 취급하려는 경우 사용할 수 있습니까 ? 와일드 카드보다는 그 자체로. 저장소의 파일 이름에 * 또는 ? , 나는이 서명이 자주 사용될 것이라고 생각하지 않습니다.

 git log ': (literal)*. js' # 파일의 로그를 반환합니다 '*.js'

글로벌

내가 배우기 시작했을 때<pathspec></pathspec> 야생 카드가 예전과 다르게 작동한다는 것을 알았을 때. 일반적으로, 나는 단일 별표 * 디렉토리의 어떤 것도 일치시키지 않는 와일드 카드로, "깊은"와일드 카드로서 연속적인 별표 ( ** )는 디렉토리의 이름과 일치 합니다 . 이 스타일의 와일드 카드를 선호하는 경우 glob Magic Signatures를 사용할 수 있습니다!

이것은 프로젝트 디렉토리 구조 검색 방식을보다 세분화하려는 경우 매우 유용합니다. 예를 들어,이 두 git ls-files 어떻게 React 프로젝트를 검색하는지 살펴 보겠습니다.

 git ls-files ': (glob) src/components/*/*. jsx' # "Top"JSX 구성 요소 git ls-files ': (glob) src/구성 요소/**/*. jsx' # "All"JSX 구성 요소

att

GIT는 특정 파일의 "속성"을 설정할 수 있습니다. .gitattributes 파일을 사용하여 이러한 속성을 설정할 수 있습니다.

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

당신의 attr Magic Signatures를 사용하십시오<pathspec></pathspec> 속성 요구 사항을 설정합니다. 예를 들어, 공급 업체의 위의 문서를 무시할 수 있습니다.

 git ls-files ': (att

들어오지 못하게 하다

마지막으로, " exclude "의 마법 서명이 있습니다 ( :! 또는 :^ ). 이 서명은 다른 마법 서명과 다르게 작동합니다. 다른 모든 것을 해결하십시오<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 사용), Case-Insensentitive ( icase 사용)에서 일치하려면 저자 코드를 사용하여 (벤더 파일을 무시하기 위해 attr 사용하고) 글로벌 스타일 와일드 카드 ( glob 사용) 만 사용하려면 다음을 수행 할 수 있습니다.

 git ls-files-': (상단, Icase, glob, attr :! vendored) src/components/*/*. jsx'

당신이 결합 할 수없는 두 가지 마법의 서명은 globliteral 입니다. 둘 다 git이 와일드 카드를 처리하는 방식에 영향을 미치기 때문입니다. 이것은 Git 용어집에 언급되어 있으며 아마도 내가 어떤 문서에서 읽은 가장 좋아하는 문장 일 것입니다.

Glob Magic은 문자 그대로의 마술과 호환되지 않습니다.

<pathspec></pathspec> 많은 GIT 명령의 필수 요소이지만 유연성은 즉시 보이지 않습니다. 와일드 카드와 마법 서명을 사용하는 방법을 배우면 GIT 명령 줄에서 능력을 두 배로 늘릴 수 있습니다.

위 내용은 Git Pathspecs 및 사용 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
@keyframes 및 @Media와 같이 @Rules는 얼마나 많은 특이성을 가지고 있습니까?@keyframes 및 @Media와 같이 @Rules는 얼마나 많은 특이성을 가지고 있습니까?Apr 18, 2025 am 11:34 AM

나는 다른 날이 질문을 받았다. 나의 첫 번째 생각은 : 이상한 질문입니다! 특이성은 선택기에 관한 것이며 At-Rules는 선택기가 아니므로 ... 무의미합니까?

@Media 및 @Support 쿼리를 중첩 할 수 있습니까?@Media 및 @Support 쿼리를 중첩 할 수 있습니까?Apr 18, 2025 am 11:32 AM

그렇습니다. 당신은 할 수 있습니다. 그리고 그것은 실제로 어떤 순서로 중요하지 않습니다. CSS 전 처리기가 필요하지 않습니다. 일반 CSS에서 작동합니다.

빠른 Gulp 캐시 파열빠른 Gulp 캐시 파열Apr 18, 2025 am 11:23 AM

CSS 및 JavaScript (및 이미지 및 글꼴 등)와 같은 자산에 멀리 떨어진 캐시 헤더를 설정해야합니다. 브라우저를 알려줍니다

CSS의 품질과 복잡성을 모니터링하는 스택을 찾아CSS의 품질과 복잡성을 모니터링하는 스택을 찾아Apr 18, 2025 am 11:22 AM

많은 개발자들은 CSS 코드베이스를 유지하는 방법에 대해 글을 썼지 만 코드베이스의 품질을 어떻게 측정하는지에 대해 많은 글을 쓰지 않습니다. 물론, 우리는 가지고 있습니다

Datalist는 가치를 시행하지 않고 값을 제안하는 것입니다Datalist는 가치를 시행하지 않고 값을 제안하는 것입니다Apr 18, 2025 am 11:08 AM

짧고 임의의 텍스트를 수락 해야하는 양식이 있습니까? 이름이나 다른 것 같습니다. 정확히 무엇을위한 것입니다. 많은 것이 있습니다

취리히에서 열린 전면 회의취리히에서 열린 전면 회의Apr 18, 2025 am 11:03 AM

나는 프론트 컨퍼런스를 위해 스위스 취리히로 향하게되어 매우 기쁩니다 (그 이름과 URL을 사랑합니다!). 나는 전에 스위스에 가본 적이 없기 때문에 나는 흥분했다

CloudFlare Workers와 함께 풀 스택 서버리스 애플리케이션 구축CloudFlare Workers와 함께 풀 스택 서버리스 애플리케이션 구축Apr 18, 2025 am 10:58 AM

소프트웨어 개발에서 제가 가장 좋아하는 개발 중 하나는 서버리스의 출현이었습니다. 세부 사항에 푹 빠지는 경향이있는 개발자로서

NUXT 응용 프로그램에서 동적 경로 생성NUXT 응용 프로그램에서 동적 경로 생성Apr 18, 2025 am 10:53 AM

이 게시물에서는 들어오는 데이터를 위해 동적 경로를 만드는 방법을 보여주기 위해 NetLify에 구축하고 배포 한 전자 상거래 상점 데모를 사용합니다. 상당히입니다

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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구