pom.xml, **/pom.xml, **/**/pom.xml, 그 다음 **/**/**/pom.xml... 이름이 무엇이든 우리가 알고 있는 대상 파일에 대한 바로가기 무엇 디렉토리 깊이는 무엇입니까?

pom.xml, **/pom.xml, **/**/pom.xml, 그 다음 **/**/**/pom.xml... 이름이 무엇이든 우리가 알고 있는 대상 파일에 대한 바로가기 무엇 디렉토리 깊이는 무엇입니까?

모든 파일에 일부 변경 사항을 적용하려면 pom.xml다음 명령을 실행합니다.

git checkout --theirs **/**/**/**/pom.xml
git checkout --theirs **/**/**/pom.xml
git checkout --theirs **/**/pom.xml
git checkout --theirs **/pom.xml
git checkout --theirs pom.xml

pom.xml그러나 디렉토리 깊이에 관계없이 모든 파일에 대한 대체 파일을 찾을 수 없습니다 .

단일 명령으로 수행 중인 작업을 어떻게 수행할 수 있습니까?

답변1

귀하의 요청에 따라 가능한 답변은 두 가지입니다. 아직 존재하지 않는 파일이나 디렉터리를 일치시키기 위해 쉘 와일드카드를 사용할 수 없습니다. 따라서 git파일 시스템에 이미 존재하지 않는 한 체크아웃할 항목을 표시하기 위해 쉘 와일드카드를 사용할 수 없습니다 . 다행히도 git이 상황에서는 기본적으로 와일드카드를 지원합니다.

  1. 특히 , 셸이 확장을 시도하지 않고 자체적 으로 git전달해야 합니다 . 이 경우 따옴표를 사용하여 문자열을 리터럴로 전달합니다 .**gitgit

    git checkout '**/pom.xml'
    
  2. gitbash바이너리 와일드카드 확장은 셸 외부에서 지원됩니다. 문서( man bash)는 다음과 같이 씁니다.

    globstar**설정된 경우 경로 이름 확장 컨텍스트에 사용된 패턴은 모든 파일과 0개 이상의 디렉터리 및 하위 디렉터리와 일치합니다. 패턴 뒤에 가 오면 /디렉터리와 하위 디렉터리만 일치합니다.

    이는 일반적으로 기본적으로 활성화되어 있지 않은 옵션이므로 bash활성화해야 합니다.

    shopt -s globstar
    

    나중에 예를 들어,

    ls **/pom.xml
    

관련 정보