git for Windows git grep에서 슬래시 시작 문자열을 검색하면 항상 히트하지 않습니다.
개요
git grep
에서 슬래시로 시작하는 문자열을 검색하면 원래 히트해야 하는 문자열이 히트하지 않게 된다/
, /fuga
등 환경
재현 절차
준비 1: 테스트용 파일 만들기
$ echo 'hoge' > test.txt
$ echo '/fuga' >> test.txt
$ echo 'fo/o' >> test.txt
$ cat test.txt
hoge
/fuga
fo/o
준비 2: 테스트 파일 스테이지
$ git init .
Initialized empty Git repository in C:/dev/src/test-dir/.git/
$ git add test.txt
이제 test.txt가 git grep
의 대상이되었습니다.
주제 : 다양한 키워드로 git grep 시도
슬래시 없음: 예상대로 히트
$ git grep 'hoge'
test.txt:hoge
슬래시로 시작: 히트하지 않음
$ git grep '/'
$
$ git grep '/fuga'
$
슬래시를 검색 키의 시작 부분에 넣지 않으면 예상대로 히트합니다.
$ git grep 'fuga'
test.txt:/fuga
$ git grep 'fo/'
test.txt:fo/o
# こういうのも OK
$ git grep '\/'
test.txt:/fuga
test.txt:fo/o
원인
htps : // 기주 b. 코 m / gi t fu r-u undo ws / gi t / issue s / 2109
htps : // 기주 b. 코 m/기 t후 r-우우드 ws/부이 ld-에 xt등/bぉb/마s r/레ぇ 아세노테 s. md # k의 w
슬래시 시작의 파라미터를 주었을 경우, POSIX 의 패스를 Windows 로 취급할 수 있도록(듯이) 하기 위해(때문에), 캐릭터 라인의 변환이 행해지는 모양.
예를 들어,
$ ll /git-bash.exe
-rwxr-xr-x 1 Tsubasa Ogawa 197609 152600 6月 8 15:14 /git-bash.exe*
터미널에서 루트 바로 아래에 git-bash.exe가있는 것처럼 보이지만,
Windows 상의 파일 시스템에서는 C:\...
(와)과 같은 드라이브 레터로부터 시작되는 패스가 되고 있다. 즉, 슬래시 시작의 캐릭터 라인을 건네주면(자), C:\...
와 같은 prefix 가 부여되어 버린다.
대책
공식이 추천하는 것은 MSYS_NO_PATHCONV=1
를 사용하는 방법으로, 예의 패스 변환을 무효화해 준다.
$ MSYS_NO_PATHCONV=1 git grep '/'
test.txt:/fuga
test.txt:fo/o
또는 두 개의 슬래시를 계속하는 방법이 있습니다.
git grep '//'
test.txt:/fuga
test.txt:fo/o
요약
$ echo 'hoge' > test.txt
$ echo '/fuga' >> test.txt
$ echo 'fo/o' >> test.txt
$ cat test.txt
hoge
/fuga
fo/o
$ git init .
Initialized empty Git repository in C:/dev/src/test-dir/.git/
$ git add test.txt
$ git grep 'hoge'
test.txt:hoge
$ git grep '/'
$
$ git grep '/fuga'
$
$ git grep 'fuga'
test.txt:/fuga
$ git grep 'fo/'
test.txt:fo/o
# こういうのも OK
$ git grep '\/'
test.txt:/fuga
test.txt:fo/o
htps : // 기주 b. 코 m / gi t fu r-u undo ws / gi t / issue s / 2109
htps : // 기주 b. 코 m/기 t후 r-우우드 ws/부이 ld-에 xt등/bぉb/마s r/레ぇ 아세노테 s. md # k의 w
슬래시 시작의 파라미터를 주었을 경우, POSIX 의 패스를 Windows 로 취급할 수 있도록(듯이) 하기 위해(때문에), 캐릭터 라인의 변환이 행해지는 모양.
예를 들어,
$ ll /git-bash.exe
-rwxr-xr-x 1 Tsubasa Ogawa 197609 152600 6月 8 15:14 /git-bash.exe*
터미널에서 루트 바로 아래에 git-bash.exe가있는 것처럼 보이지만,
Windows 상의 파일 시스템에서는
C:\...
(와)과 같은 드라이브 레터로부터 시작되는 패스가 되고 있다. 즉, 슬래시 시작의 캐릭터 라인을 건네주면(자), C:\...
와 같은 prefix 가 부여되어 버린다.대책
공식이 추천하는 것은 MSYS_NO_PATHCONV=1
를 사용하는 방법으로, 예의 패스 변환을 무효화해 준다.
$ MSYS_NO_PATHCONV=1 git grep '/'
test.txt:/fuga
test.txt:fo/o
또는 두 개의 슬래시를 계속하는 방법이 있습니다.
git grep '//'
test.txt:/fuga
test.txt:fo/o
요약
$ MSYS_NO_PATHCONV=1 git grep '/'
test.txt:/fuga
test.txt:fo/o
git grep '//'
test.txt:/fuga
test.txt:fo/o
git grep
때 슬래시 시작 키워드를 사용하지 않도록주의 MSYS_NO_PATHCONV=1
사용 Reference
이 문제에 관하여(git for Windows git grep에서 슬래시 시작 문자열을 검색하면 항상 히트하지 않습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tsubasaogawa/items/93722bd4769ff87a8099텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)