답변:
세상에, 드라이버와 awk가 파일을 제외할까요? 자식 1.9 이후로 할 수있는 것 :
git diff -- . ':(exclude)db/irrelevant.php' ':(exclude)db/irrelevant2.php'
아, 우아! 인용 된 답변을 참조하고 @torek 의이 답변 에 대한 자세한 내용
git diff -- . ':(exclude)*.min.js' ':(exclude)*.min.css'
git diff -- . ":(exclude)db/irrelevant.php"
(작은 따옴표 대신 큰 따옴표)
git diff -- . :(exclude)db/irrelevant.php
op 명령없이 사용자 정의 diff 드라이버를 설정하고 무시해야하는 파일에 할당 할 수 있습니다.
이 명령 으로 저장소 특정 diff 드라이버 를 작성하십시오.
git config diff.nodiff.command /bin/true
또는 모든 당신의 repos에 대한 --global
.
(경우 /bin/true
, 맥 OS에 존재하지 않는 대안을 사용하는 것 /usr/bin/true
또는 echo
).
그런 다음 파일 에서 무시하려는 파일에 새 diff 드라이버를 할당.git/info/attributes
하십시오.
irrelevant.php diff=nodiff
이 상태가 다른 개발자 와 공유되어야한다면 , 문서 파일이나 다른 것을 통해 동료 .gitattributes
대신 명령을 사용하여 동료와 명령을 .git/info/attributes
공유 할 수 있습니다 git config
.
[diff "nodiff"]
/ TRUE '`명령 = / 빈 나는 다음라는 파일을 생성 내가 추가 한 .git / info / attributes : irrelevant.php diff=nodiff
git diff --stat
. 이 경우 git diff ... | diffstat
해결 방법으로 사용할 수 있습니다 .
--no-ext-diff
당신은 또한 사용할 수 있습니다 filterdiff 의 프로그램 patchutils의 DIFF의 일부를 제외하는 프로그램 모음. 예를 들면 다음과 같습니다.
git diff | filterdiff -p 1 -x db/irrelevant.php
-p
맨 페이지 (1)에서,는 "-pn, --strip 매치 = N 매칭 경로명의 처음 N 개의 성분을 무시하면." OP의 경로에서 부품을 -p 1
제거 하는 것을 잡는 데 시간이 걸렸습니다 db
. 파일 이름 만 지정하고 모든 경로 / dir 가능성을 무시하려면을 사용할 수 있습니다 -p 99
.
이 방법은 허용되는 답변보다 짧습니다.
git diff 987200fbfb 878cee40ba --stat -- ':!*.cs'
다른 포함 / 제외 가능성에 대한 자세한 내용은 이 다른 게시물을 참조하십시오.
이 한 줄 솔루션에는 다른 유틸리티 / 다운로드가 필요하지 않습니다.
git diff `git status -s |grep -v ^\ D |grep -v file/to/exclude.txt |cut -b4-`
file/to/exclude.txt
물론 제외하려는 파일의 이름은 어디에 있습니까 ?
편집 : diff를 깨는 삭제 된 파일을 수정 한 신용 ksenzee .
git diff --stat master
큰 성공없이 적응하려고 노력하고 있습니다 -당신은 도울 수 있습니까?
내가해야 할 일에 대해 KurzedMetal의 정말 좋은 대답 은 파일이 변경되었음을 알 수 있지만 내 경우에는 커질 수있는 diff를 생성 할 수 없었습니다.
그러나 내 동료가 더 간단하고 나를 위해 일한 접근법을 제안했습니다.
.gitattributes
무시할 파일이있는 디렉토리에 파일을 추가 git diff
하면 다음 내용이 포함됩니다.
file-not-to-diff.bin -diff
그래도 git status
파일이 변경되면 "볼" 수 있습니다 . git diff
또한 파일이 변경되었음을 "참조"하지만을 생성하지는 않습니다 diff
.
그 .bin
예에서 파일의 확장자는 고의적이었다. 이진 파일에 대한 git의 기본 동작이라는 것을 알고 있으며로 특별한 처리가 필요하지 않습니다 .gitattributes
. 그러나 필자의 경우이 파일은 git 및 "file"유틸리티에서 텍스트 파일로 인식되어 트릭을 수행했습니다.
git diff
선택적 제외를 허용합니다.
git diff -- ":(exclude)thingToExclude"
git diff -- ":(exclude)*/thingToExclude/*"
git diff -- ":(exclude)*/$1/*.png"
.bash_profile
또는.zshrc
gde() {
# git diff exclude files or folders
# usage:
# gde fileOrFolderNameToExclude
git diff -- ":(exclude)*/$1/*"
}
git diff --staged
희망이 도움이 될 수 있습니다.
매우 간단합니다. 표준 유닉스 명령을 사용하여 원하는 것을 제외시킬 수 있습니다.이 명령은 Windows 환경에서도 git bash에서 사용할 수 있습니다. 아래 예제는 pom.xml 파일에 대해 diff를 제외하고, 먼저 파일 이름에 대해서만 diff를 마스터로 확인한 다음 'grep -v'제외 파일을 사용하여 원하지 않는 파일을 제외하고 다시 preffpred 목록으로 마스터에 diff를 실행하는 방법을 보여줍니다.
git diff master `git diff --name-only master | grep -v pom.xml`
Ben Roux의 솔루션 과 유사 하지만 어쨌든 공유하십시오.
git status --porcelain | grep -v $PATTERN_TO_EXCLUDE | awk '{print $2}' | xargs git diff
또는 변경 사항이 이미 로컬로 커밋 된 경우 :
git diff --name-only origin/master | grep -v $PATTERN_TO_EXCLUDE | xargs git diff origin/master
예 :
git status --porcelain | grep -v docs | awk '{print $2}' | xargs git diff origin/master
git diff --name-only origin/master | grep -v docs | xargs git diff origin/master
.gitignore
파일 구문 과 다른 접두사로 별표를 붙여야 합니다. 예:!*shrinkwrap.yaml
대신:!shrinkwrap.yaml
.