git for Windows git grep에서 슬래시 시작 문자열을 검색하면 항상 히트하지 않습니다.

3963 단어 WindowsGit

개요


  • Git for Windows git grep 에서 슬래시로 시작하는 문자열을 검색하면 원래 히트해야 하는 문자열이 히트하지 않게 된다
  • 슬래시로 시작하는 문자열이란: / , /fuga


  • 환경


  • git version 2.22.0.windows.1
  • Terminal 은 mintty

  • 재현 절차



    준비 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
    

    요약


  • Git for Windows에서 git grep 때 슬래시 시작 키워드를 사용하지 않도록주의
  • 만약 아무래도 사용하고 싶은 경우, 이하에서 패스 변환을 회피한다
  • MSYS_NO_PATHCONV=1 사용
  • 슬래시를 2 개 계속 사용
  • 탈출

  • 좋은 웹페이지 즐겨찾기