development

git-diff에서 파일 제외

big-blog 2020. 12. 1. 18:55
반응형

git-diff에서 파일 제외


git로 프로젝트를 추적하고 있습니다. 계속 추적하고 싶지만 diff에서보고 싶지 않은 일부 Xcode 프로젝트 파일이 있습니다. 왜냐하면 항상 관심이없는 수십 개의 변경된 줄이 있기 때문입니다.이 파일을 git-diff건너 뛸 수 있는 간단한 방법이 있습니까? 파일? 사용자 지정 "자동"비교 도구를 설정하려고했습니다.

$ cat .gitattributes 
Project.xcodeproj / * diff = nodiff

$ 고양이 ~ / .gitconfig 
[diff "nodiff"]
    명령 = / bin / true

그러나:

$ git diff
외부 diff가 종료되어 Project.xcodeproj / zoul.mode1v3에서 중지됩니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까?


문제는 /bin/true입력을 읽지 않고 즉시 반환 된다는 것입니다. git diff그러므로 그것은 매우 합리적으로 조기에 죽었다고 생각합니다.

정말로 원하는 것은 diff 속성을 설정 해제하는 것입니다. 가짜 명령으로 설정하는 것이 아닙니다. 이것을 시도하십시오 .gitattributes:

Project.xcodeproj/* -diff

.git / config에서 별칭을 사용할 수 있습니다.

[alias]
        mydiff = !git diff | filterdiff -x "*/Project.xcodeproj/*"

이 트릭을 위해서는 filterdiff (patchutils에서)가 필요합니다.

sudo apt-get install patchutils

여전히 diff는 완벽하지 않으며 일부 쓰레기를 남깁니다.

yannick@yannick-desktop:~/git-filter-test$ git mydiff
diff --git a/Project.xcodeproj/dummy.txt b/Project.xcodeproj/dummy.txt
index 3e1f9e6..89dfed9 100644
diff --git a/dummy2.txt b/dummy2.txt
index 91966ce..d9588a9 100644
--- a/titi.txt
+++ b/titi.txt
@@ -1,3 +1,3 @@
 aaaaaaaaaa
-bbbbbbbbb
 cccccc
+ddd

외부 도구없이 깨끗한 출력을 생성하는 또 다른 솔루션 (에 추가 .git/config) :

[alias]
    mydiff = !git diff -- $(git diff --name-only | grep -Ev "Project.xcodeproj/")

그런 다음 다음과 같이 실행하십시오.

git mydiff

참고 git diff --name-only더보다 git ls-files가에 파일의 짧은 목록을 통과하기 때문에 git diff포함됩니다 수정 된 파일 만 있기 때문에. .NET을 사용할 때 대규모 프로젝트에서 최대 인수 수를 초과하는 문제가 발생했습니다 git ls-files.


다른 사람이 우리와 똑같은 고통을 겪을 수도 있습니다. 이미 커밋 된 파일을 제외하고 싶었습니다.

이 게시물은 훨씬 더 유용했습니다. .git / info / exclude 작업이 너무 늦었습니다.

특히 파일을 무시해야하는 것은 실제로 git remove 명령을 사용하는 것입니다. git rm 참조 ( http://www.kernel.org/pub/software/scm/git/docs/git-rm.html )

당신은 가서 그것을 테스트

git rm --dry-run *.log
(모든 로그 파일을 제외하려는 경우)

어떤이가 출력 될 것입니다 당신이 그것을 실행 한 경우 제외.

그때

당신은 가서 그것을 실행

git rm *.log
(또는 원하는 파일 이름 경로 / 표현식)

참고 URL : https://stackoverflow.com/questions/1016798/except-files-from-git-diff

반응형