codememo

gitdiff에서 파일 제외

tipmemo 2023. 5. 28. 20:49
반응형

gitdiff에서 파일 제외

.db/irrelevant.php에서. Git diff서.나는 파일을 파일에 넣으려고 시도했습니다.db호된하위리라는 .gitattributes에라는 irrelevant.php -diff 그고나는또파만것시드다니습도을했라는 도 만들어 ..git/info/attributes중을 db/irrelevant.php.

모든경에우,에,db/irrelevant.php파일은 Git 이진 패치로 diff에 포함되어 있습니다.제가 원하는 것은 그 파일의 변경 사항이 diff 명령에 의해 무시되기를 바라는 것입니다.내가 뭘 잘못하고 있는 거지?

및 오, 드버이및awk형편없는 파일을 제외하기 위해?Git 1.9 이후 가능한 기능:

git diff -- . ':(exclude)db/irrelevant.php' ':(exclude)db/irrelevant2.php'

따옴표(Windows 경우따바꿉를니다)를 '".)

아, 우아함!인용된 답변을 참조하고 자세한 내용은 @torek의 답변을 참조하십시오.

이 방법은 허용된 답변보다 짧습니다.

git diff 987200fbfb 878cee40ba -- ':!*.cs'

다양한 포함/제외 가능성에 대한 자세한 내용은 이 다른 게시물을 참조하십시오.

noop 명령을 사용하여 사용자 정의 diff 드라이버를 설정하고 무시해야 하는 파일에 할당할 수 있습니다.

명령을 사용하여 리포지토리 관련 diff 드라이버 생성

git config diff.nodiff.command /bin/true

또는 모든 저장소에 사용할 수 있습니다.--global.

(만약/bin/true. 를 사용하는 것이 이 될 수 . 대체 방법은 다음과 같습니다./usr/bin/true또는echo).

그런 다음, diff 드라이버를 무시할 파일에 할당합니다..git/info/attributesjava.

irrelevant.php    diff=nodiff

를 다른 에는 이상다개른공하유경수사있다습니용할우는야태해와를 사용할 수 있습니다..gitattributes.git/info/attributes 공유및기하유공▁the를 공유합니다.git config(문서 파일 등을 통해) 동료와 함께 명령합니다.

가장 간단한 답

git diff ':!db/irrelevant.php'

이건 그저건.':!<path>'당신의 diff 명령 뒤에.할 수 , ▁▁like▁the▁can▁wild다있니습▁diff▁command▁use수▁can▁and령명▁you사용▁like▁be,▁asated▁as할과 같은 와일드카드를 사용할 수 있습니다.*.min.js또는 여러 제외 항목(따옴표로 묶은 블럭을 공백으로 구분)을 추가합니다.

패치 유틸리티 프로그램 모음의 필터diff 프로그램을 사용하여 diff의 일부를 제외할 수도 있습니다.예:

git diff | filterdiff -p 1 -x db/irrelevant.php

Kurzed Metal은 제가 해야 할 일에 대해 매우 좋은 답변을 했습니다. 파일이 변경되었음을 확인할 수 있었지만, 제 경우에는 큰 차이가 발생하지는 않았습니다.

하지만 제 동료는 훨씬 더 간단한 접근법을 제안했고 저에게 효과가 있었습니다.

추가.gitattributes에서 git diff다음 콘텐츠와 함께 상주합니다.

file-not-to-diff.bin -diff

그것은 여전히.git status파일이 변경된 경우 "보기". git diff ".diff.

그거.bin예에서 파일의 확장자가 의도적이었습니다.나는 이것이 이진 파일에 대한 git의 기본 동작이며, 특별한 처리가 필요하지 않다는 것을 알고 있습니다..gitattributes하지만 저의 경우, 이 파일들은 git과 "file" 유틸리티에 의해 텍스트 파일로 인식되었고, 이것은 효과가 있었습니다.

이 한 줄 솔루션은 다른 유틸리티/다운로드가 필요하지 않습니다.

git diff `git status -s |grep -v ^\ D |grep -v file/to/exclude.txt |cut -b4-`

어디에file/to/exclude.txt물론 제외할 파일의 이름입니다.

편집: 디프를 깬 삭제된 파일을 수정한 ksenzee를 크레딧합니다.

git 루트 디렉터리에 대한 상대적

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/*"
}

기존 응답을 기반으로, 디렉토리의 위치에 상관없이 파일 패턴을 제외하려면 다음과 같은 gitpathspec 값을 사용합니다.**:

git diff -- ':!**/yarn.lock'

다음 작업을 수행합니다.

git add *pattern_to_exclude*
git diff
git reset HEAD .

우아한 솔루션이 아니며 사용할 수 없는 경우도 있습니다(예: 이미 준비된 내용이 있는 경우). 그러나 복잡한 명령을 입력할 필요 없이 유용하게 사용할 수 있습니다.

매우 간단합니다. 표준 unix 명령을 사용하여 원하는 것을 제외할 수 있습니다. 이러한 명령은 Windows 환경에서도 gitbash에서 사용할 수 있습니다.다음 예제에서는 pom.xml 파일에 대해 diff를 제외하고 파일 이름에 대해서만 master로 확인한 다음 원하지 않는 'grep-v' 제외 파일을 사용하고 사전 준비된 목록으로 diff를 master로 다시 실행하는 방법을 보여 줍니다.

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

해결 방법

git add .
git reset <list of files to ignore>
git diff --cached

Diff를 시각적으로만 검사하려는 경우 시각적 Diff 도구(Meld와 같은)를 사용하여 기억하기 쉬운 짧은 명령을 사용하여 Diff를 수행할 수 있습니다.

먼저, 아직 설정하지 않은 경우 다른 도구를 설정합니다.

$ git config --global diff.tool = meld

그런 다음 디렉터리 diff를 실행할 수 있습니다.

$ git difftool --dir-diff

Meld(또는 원하는 도구)에서 파일별로 diff를 찾아볼 수 있습니다.무시할 파일을 열지 마십시오.

git diff remote/master..master --name-only -- ':!README.rst'

제공됨(git 버전 2.11.0)

fatal: There is nothing to exclude from by :(exclude) patterns.
Perhaps you forgot to add either ':/' or '.' ?
git diff remote/master..master --name-only -- './*' ':!README.rst'

잘 작동했습니다. 출처: https://stackoverflow.com/a/30084612/5155484

언급URL : https://stackoverflow.com/questions/10415100/exclude-file-from-git-diff

반응형