고쳐 쓰다:

고쳐 쓰다:

git diff시작하는 변경 사항을 어떻게 무시할 수 있나요 #? 일반적인 diff명령의 경우 다음과 같은 것을 사용합니다.

diff <(grep -v '^#' file1) <(grep -v '^#' file2)

그러나 아래 제안된 솔루션 중 어느 것도 작동하지 않습니다!

git diff댓글을 생략하면 정말 읽기가 불가능한 걸까요?

고쳐 쓰다:

내 안에는 .gitconfig:

[pager]
    cdiff = diff-highlight

[alias] 
    cdiff = "diff -w --ignore-blank-lines -I'^#'"

이 작업을 수행하면 git cdiff다음 오류가 발생합니다.

error: invalid option: -I^#

업데이트 2:

정말 실망스럽습니다. 이 구문은 git diff -G'^[^#]'안정적으로 작동하지 않습니다. 예:

$ cat 1.txt
aaa
bbb
ccc
ddd
eee
fff
ggg
hhh
iii
jjj

새 Git 저장소를 초기화합니다.

$ git init && git add . && git commit -m "initial commit" -a

파일 상단에 설명을 추가하면 됩니다.

$ cat 1.txt
# comment
aaa
bbb
ccc
ddd
eee
fff
ggg
hhh
iii
jjj

지금까지는 예상대로 작동합니다. git diff -G'^[^#]'댓글을 변경사항으로 표시하지 마세요. 그러나 마지막 줄에 실제 변경 사항을 추가한 다음 git diff -G'^[^#]'다시 실행하면 추가된 마지막 줄이 표시되지만(해야 하는 대로) 이전에 표시되지 않았던 첫 번째 주석 줄도 표시됩니다.

따라서 기본적으로 주석이 아닌 변경 사항을 추가할 때마다 git은 주석까지 모든 것을 표시합니다.

답변1

이는 ing 전에 모든 파일을 필터링 하여 diff달성할 수 있습니다 .

먼저 작은 도우미를 작성하고 호출합니다 stripcomments(실행 파일, 어딘가에 있음 PATH).

#!/bin/sh -
exec grep -ve '^#' -- "$@"

git diff그런 다음 이 도우미를 사용하여 모드를 구성합니다.

git config diff.nocomments.textconv stripcomments

(현재 저장소가 구성됩니다).

마지막으로 모든 파일에서 이 도우미를 사용하도록 git 속성을 설정합니다.

echo '* diff=nocomments' >> .gitattributes

(저장소의 최상위 디렉토리에 있음)

git diff이제 로 시작하는 모든 줄은 무시됩니다 #. 이는 행 번호 매기기에 영향을 미칩니다.

모든 용도를 재정의하는 대신 이를 별칭으로 사용하려면 위 명령을 git diff건너뛰고 git config다음과 같이 별칭을 만듭니다.

git config alias.cdiff '-c diff.nocomments.textconv=stripcomments diff'

이제 주석이 제거된 상태로 실행됩니다 git cdiff.git diff#

git config --global저장소별로 대신 ( )에 속성을 사용하고 저장하여 이러한 모든 항목을 전역적으로 구성할 수 있습니다 .$XDG_CONFIG_HOME/git/attributes~/.config/git/attributes.gitattributes

바라보다man gitattributes그리고man git-config더 알아보기.

답변2

어쩌면 당신은 하나 만들고 싶을 수도 있습니다git diff 및 정규식cdiff그리고 git 구성에 이 명령에 대한 별칭을 추가하세요.

git diff -w -G'^[^#]'

~/.gitconfig그런 다음 명령에 별칭을 추가하십시오.

[alias]
    cdiff = "diff -w -G'^[^#]'"

이것이 의도한 목적에 맞는지 확실하지 않으므로 필요에 따라 조정하십시오.

답변3

예를 들어 보면 다음과 같습니다.

mkdir cdiff && cd cdiff
git init
cat text.txt
# first comment
1
2
# midle comment
3

4
# last comment
git add test.txt
git commit -m 'first'

이제 작업 디렉터리에서 이를 변경해 보겠습니다.

cat test.txt
1

2
# first comment
# last comment
4
bye

유틸리티를 생성합니다:

cat /usr/local/bin/git-cdiff
#!/bin/sh
diff --color -u <(grep -Ev '^(#|$)' $1) <(git show $2:$1 | grep -Ev '^(#|$)')
chmod 555 /usr/local/bin/git-cdiff

특정 커밋의 동일한 파일을 작업 디렉터리의 파일과 비교합니다.

git cdiff test.txt HEAD

또는:

git cdiff test.txt <hash commit>
git cdiff test.txt a4ec1
--- /dev/fd/63  2021-07-09 08:09:48.581153921 +0300
+++ /dev/fd/62  2021-07-09 08:09:48.581153921 +0300
@@ -1,4 +1,4 @@
 1
 2
+3
 4
-bye

관련 정보