development

git : glob 패턴과 일치하는 디렉토리 하위 트리의 모든 파일을 재귀 적으로 추가하려면 어떻게해야합니까?

big-blog 2020. 12. 30. 20:16
반응형

git : glob 패턴과 일치하는 디렉토리 하위 트리의 모든 파일을 재귀 적으로 추가하려면 어떻게해야합니까?


내부에 여러 .screen 파일 /xxx/documentation과 Git에서 이미 추적하는 하위 디렉터리가 있습니다.

이러한 화면 파일을 많이 수정 한 후의 설명서 git add documentation/\\*.screen의 첫 번째 예에 표시된대로 git-add이러한 파일을 스테이징하기 위해 실행하지만 명령이 실패합니다.

치명적 : pathspec 'documentation / \ *. screen'이 일치하는 파일이 없습니다.

내 명령이 나쁘거나 git에 버그가 있습니까?


문서의 버그입니다. 별표를

$ git add documentation / \ *. screen

또는

$ git add 'documentation / *. screen'

원하는 동작을 얻으려면.

대신 현재 디렉토리에만 파일을 추가하려면

$ git add * .screen

업데이트 : 문제를 해결 하는 패치제출했는데 이제 버전 1.6.6.2에서 수정 되었습니다.


나는 받아 들인 대답을 시도했지만 저에게 효과가 없었습니다 .. 그래서 누군가 문제를 일으킬 수있는 다양한 측면을 해부하는 데 시간을 소비하지 않고 일을 끝내고 자하는 경우를 대비하여 여기에 있습니다.

find documentation -name "*.screen" | xargs git add -u

// git-add의 -u 옵션은 이전에 추적 및 수정 된 파일 만 색인에 추가합니다.


셸에 찾도록 명령했습니다 *.screen(즉, "로 끝나는 모든 파일이 아닌 정확히이 문자열-존재하지 않는-" .screen). \\셸이 파일 이름 확장을 수행 할 수 있도록 생략 합니다.


이것은 내가 디렉토리의 모든 파일을 추가하는 유사한 문제에 방금 사용한 것입니다.

find . | sed "s/\(.*\)/\"\1\"/g" | xargs git add 

원래 질문의 경우 명령은 다음과 같습니다.

find -name "*.screen" | sed "s/\(.*\)/\"\1\"/g" | xargs git add 

완전히 지정된 파일 이름에 공백이 포함 된 경우를 다루고 있습니다. 그게 내 대답입니다. |추가 할 다른 파일을 선택 하려면 첫 번째 부분을 편집 하십시오.


git add * .java는 모든 Java 파일을 재귀 적으로 추가하도록 작동합니다.


시험

git add ./documentation/*.screen

참조 URL : https://stackoverflow.com/questions/2221408/git-how-do-i-recursively-add-all-files-in-a-directory-subtree-that-match-a-glob

반응형