programing

파일 확장명을 기반으로 Gitdiff를 필터링하는 방법은 무엇입니까?

testmans 2023. 6. 24. 08:51
반응형

파일 확장명을 기반으로 Gitdiff를 필터링하는 방법은 무엇입니까?

제한할 수 있는 옵션이 있습니까?git diff파일 확장명 집합으로 이동하시겠습니까?

예, 만약 당신이 당신의 셸이 아닌 glob을 확장하는 것을 확실히 한다면, 그것은 어떤 수준에서도 일치할 것이고, 그래서 이것과 같은 것(인용문이 중요합니다)은 잘 작동할 것입니다.

git diff -- '*.c' '*.h'

파일을 재귀적으로(현재 dir 포함) 포함하려면 다음과 같이 해야 합니다.

git diff -- '***.py'

셸의 Globstar(재귀 1,2:검색 수행)를 사용합니다.

shopt -s globstar 
git diff -- *.py **/*.py

또는 찾기를 사용합니다.

find -name '*.py' -print0 | xargs -0 git diff --

이 두 가지 모두 특수 이름과 공백 증명입니다.확장명이 .py인 디렉토리를 필터링할 수도 있지만 :)


나는 하는것을 좋아합니다git diff -- {.,**}/*.py보통

2 globstar가 활성화되면,git diff -- **/*.py이미 포함됨./*.pyBash의 manpage에서 '/ 뒤에 /가 붙으면 인접한 두 *가 디렉터리와 하위 디렉터리만 일치합니다.'

git 버전 2.18.0에서 테스트한 것처럼 파일 확장명은 큰따옴표로 묶어야 합니다.풀링 후 로컬 리포지토리와 원격 리포지토리 간의 마지막 차이점을 찾으려면 다음을 사용할 수 있습니다.

git diff YourBranchName@{1} YourBranchName --name-only "*.YourFileExtionsion"

예:

git diff master@{1} origin/master --name-only "*.cs"

단순한 파일 패턴의 경우 다음과 같이 작동합니다.

$ git ls-files -zm '*.txt' | xargs --null git diff

공백이 안전하며 여러 개의 확장자를 사용할 수도 있습니다.

$ git ls-files -zm '*.h|*.c|*.cpp' | xargs --null git diff

확장에 대한 명령줄 인수입니다.

git diff *.py

다른 방법으로 파이프를 사용할 수 있습니다.find안으로git diff:

find . -name '*.py' -type f | git diff --

위의 답변 중 어떤 것도 아래에서 나에게 효과가 없는 것 같습니다.git bashWindows에서.버전(1.8.4 사용)인지 Windows/Bash 버전인지 확실하지 않습니다. 또한 저의 경우 각 분기에 다른 분기에 없는 추가 파일이 있는 두 분기를 분산하고 싶었습니다(따라서 '찾기' 기반 파일은 누락됨).

어쨌든 이것은 저에게 효과가 있었습니다(제 예에서는 파이썬 파일 간의 차이를 찾는 것).

git diff branch1 branch2 -- `git diff --summary branch1 branch2 | egrep '\.py$' | cut -d ' ' -f 5`

파람스의 주문이 차이를 만들어낸다는 점에 주목...예:

git diff master --name-only --relative -- "**/*.ts" "**/*.tsx" "**/*.js" "**/*.jsx" "**/*.vue"

'diff' 뒤에 'master'가 와야 합니다.

git diff단계화되지 않은 파일에서만 차이를 표시합니다.

저는 이 질문을 제외하고 싶어서 찾았습니다..info에서 파일git diff로 무대를 꾸며서 이를 달성했습니다.git add *.info그러면 남은 파일이 줄어듭니다.

나는 결국 이것으로 끝났습니다.

commit=<the_commit_hash_goes_here> && git diff --name-only $commit | grep -i Test | egrep -v '\.sql$' | xargs git diff $commit --

파일 이름에 'test'(대소문자 구분 안 함)라는 단어가 포함되어 있고 다음으로 끝나지 않는 경우에만 지정된 커밋에 대한 diff가 표시됩니다..sql필요에 따라 파이프라인을 수정합니다.

언급URL : https://stackoverflow.com/questions/8554776/how-to-filter-git-diff-based-on-file-extensions

반응형