"git diff"에서 파일을 제외하고 싶습니다
db/irrelevant.php
Git diff에서 파일 ( ) 을 제외하려고합니다 . line db
이라는 서브 디렉토리에 파일을 넣으려고 시도하고 포함 이라는 파일을 작성하려고 시도했습니다 ..gitattributes
irrelevant.php -diff
.git/info/attributes
db/irrelevant.php
모든 경우에 db/irrelevant.php
파일은 Git 바이너리 패치로 diff에 포함됩니다. 내가 원하는 것은 diff 명령으로 해당 파일의 변경 사항을 무시하는 것입니다. 내가 무엇을 잘못하고 있지?
세상에, 드라이버와 awk가 파일을 제외할까요? 자식 1.9 이후로 할 수있는 것 :
git diff -- . ':(exclude)db/irrelevant.php' ':(exclude)db/irrelevant2.php'
아, 우아! 인용 된 답변을 참조하고 @torek 의이 답변 에 대한 자세한 내용
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
.
당신은 또한 사용할 수 있습니다 filterdiff 의 프로그램 patchutils의 DIFF의 일부를 제외하는 프로그램 모음. 예를 들면 다음과 같습니다.
git diff | filterdiff -p 1 -x db/irrelevant.php
이 방법은 허용되는 답변보다 짧습니다.
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 .
내가해야 할 일에 대해 KurzedMetal의 정말 좋은 대답 은 파일이 변경되었음을 알 수 있지만 내 경우에는 커질 수있는 diff를 생성 할 수 없었습니다.
그러나 내 동료가 훨씬 간단하고 나를 위해 일한 접근법을 제안했습니다.
.gitattributes
무시할 파일이있는 디렉토리에 파일을 추가 git diff
하면 다음 내용이 포함됩니다.
file-not-to-diff.bin -diff
그래도 git status
파일이 변경되면 "볼" 수 있습니다 . git diff
또한 파일이 변경되었음을 "참조"하지만을 생성하지는 않습니다 diff
.
그 .bin
예에서 파일의 확장자는 고의적이었다. 이진 파일에 대한 git의 기본 동작이며으로 특별한 처리가 필요하지 않습니다 .gitattributes
. 그러나 필자의 경우이 파일은 git 및 "file"유틸리티에서 텍스트 파일로 인식되어 트릭을 수행했습니다.
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
매우 간단합니다. 표준 유닉스 명령을 사용하여 원하는 것을 제외시킬 수 있습니다.이 명령은 Windows 환경에서도 git bash에서 사용할 수 있습니다. 아래 예제는 pom.xml 파일에 대해 diff를 제외하고, 먼저 파일 이름에 대해서만 diff를 마스터로 확인한 다음 'grep -v'제외 파일을 사용하여 원하지 않는 파일을 제외하고 다시 preffpred 목록으로 마스터에 diff를 실행하는 방법을 보여줍니다.
git diff master `git diff --name-only master | grep -v pom.xml`
나는 다음을한다 :
git add *pattern_to_exclude*
git diff
git reset HEAD .
나는 그것이 우아한 해결책이 아니라는 것을 알고 때로는 때로는 캐럿을 사용할 수 있지만 (예 : 이미 준비가되어있는 경우) 복잡한 명령을 입력하지 않고도 트릭을 수행합니다.
diff를 육안으로 검사하기 위해이 작업을 수행하려면 Meld 와 같은 시각적 diff 도구를 사용하면 기억하기 쉬운 짧은 명령으로 수행 할 수 있습니다.
먼저 diff 도구를 설정하지 않았다면 설정하십시오.
$ git config --global diff.tool = meld
Then, you can run a directory diff.
$ git difftool --dir-diff
You'll be able to browse diffs (by file) in Meld (or your tool of choice). Simply don't open the file you want to ignore.
Relative to the git root directory
git diff
accepts an optional exclude
git diff -- ":(exclude)thingToExclude"
You might want to add some wild cards
git diff -- ":(exclude)*/thingToExclude/*"
Target specific file types
git diff -- ":(exclude)*/$1/*.png"
Or drop a little script for your dotfiles
Such as .bash_profile
or .zshrc
gde() {
# git diff exclude files or folders
# usage:
# gde fileOrFolderNameToExclude
git diff -- ":(exclude)*/$1/*"
}
참고URL : https://stackoverflow.com/questions/10415100/want-to-exclude-file-from-git-diff
'development' 카테고리의 다른 글
개인 Github 저장소 복제 (0) | 2020.05.12 |
---|---|
가능한 EventEmitter 메모리 누출 감지 (0) | 2020.05.12 |
자체 언어로 컴파일러 작성 (0) | 2020.05.12 |
WPF에서 컨트롤 템플릿과 DataTemplate의 차이점 (0) | 2020.05.12 |
Rails 마이그레이션 : 열의 기본 설정 실행 취소 (0) | 2020.05.12 |