git diff
주어진 파일 확장자 세트 로 제한하는 옵션이 있습니까?
답변
예, git이 쉘이 아닌 glob를 확장하도록 보장하면 어떤 수준에서나 일치하므로 이와 같이 (따옴표가 중요합니다) 제대로 작동합니다.
git diff -- '*.c' '*.h'
답변
재귀 적으로 파일을 포함 시키려면 (현재 디렉토리 포함) 이것이 나를 위해 일했습니다.
git diff -- '***.py'
답변
쉘의 globstar (재귀 적 검색을 수행함) 1 , 2를 사용하십시오 .
shopt -s globstar
git diff -- *.py **/*.py
또는 찾기를 사용하십시오.
find -name '*.py' -print0 | xargs -0 git diff --
둘 다 특수 이름과 공백 증명입니다. .py 확장자를 가진 디렉토리를 필터링하고 싶을 수도 있습니다 🙂
1 나는 git diff -- {.,**}/*.py
보통하고 싶다
2 globstar가 활성화되면 git diff -- **/*.py
이미 포함되어 ./*.py
있습니다. Bash의 맨 페이지에서 ‘/가 오는 경우 두 개의 인접한 *는 디렉토리와 하위 디렉토리에만 일치합니다.’
답변
간단한 파일 패턴의 경우 다음과 같이 작동합니다.
$ 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 버전 2.18.0에서 테스트 한 것처럼 파일 확장자는 큰 따옴표로 묶어야합니다. 로컬 저장소와 원격 저장소 사이의 마지막 차이점을 찾으려면 끌어온 후 다음을 사용할 수 있습니다.
git diff YourBranchName@{1} YourBranchName --name-only "*.YourFileExtionsion"
예를 들면 다음과 같습니다.
git diff master@{1} origin/master --name-only "*.cs"
답변
위의 답변 중 어느 것도 git bash
Windows 에서 작동하지 않는 것 같습니다 . 버전 (1.8.4를 사용하고 있음)인지 Windows / bash인지 확실하지 않습니다. 또한 필자의 경우 각 분기마다 다른 분기에 추가 파일이없는 두 개의 분기를 비교하고 싶었습니다 (따라서 ‘찾기’기반 항목은 기각됩니다).
어쨌든 이것은 나를 위해 일했습니다 (예에서는 파이썬 파일 사이의 차이점을 찾고 있음).
git diff branch1 branch2 -- `git diff --summary branch1 branch2 | egrep '\.py$' | cut -d ' ' -f 5`