IT

유니파이드 diff 파일에서 문자별 차이를 시각화하려면 어떻게 해야 합니까?

itgroup 2023. 8. 26. 10:44
반응형

유니파이드 diff 파일에서 문자별 차이를 시각화하려면 어떻게 해야 합니까?

를 들패생성됨으로 만든 가 있다고 .git format-patch이 파일은 기본적으로 일부 메타데이터를 포함하는 통합된 diff입니다.Vim에서 파일을 열면 어떤 선이 수정되었는지 알 수 있지만, 변경된 선의 어떤 문자가 다른지는 볼 수 없습니다.문자별 차이를 시각화하는 방법(Vim 또는 Ubuntu에서 실행되는 다른 무료 소프트웨어)을 아는 사람이 있습니까?

는 문당차시카운예시실행을 실행할 입니다.vimdiff a b.

업데이트 2010년 11월 12일 금요일 22:36:23 UTC

diffpatch는 단일 파일로 작업하는 시나리오에 유용합니다.

업데이트 2016년 6월 16일 17:56:10 UTC

Diff-Highlight Git 2.9를 확인하십시오.이 스크립트는 제가 원래 찾던 것과 정확히 일치합니다.

Git에서는 커밋하지 않고 병합할 수 있습니다.패치를 먼저 병합한 후 다음 작업을 수행합니다.

git diff --word-diff-regex=.

등호 뒤의 점을 기록합니다.

다음은 노이즈가 적은 출력 버전입니다.git diff --word-diff-regex=<re>타이핑하는 것보다 덜 필요하지만, 그것은 다음과 같습니다.git diff --color-words --word-diff-regex=<re>.

단순(공간 변경 강조 표시):

git diff --color-words

단순(개별 문자 변경은 강조 표시하고 공백 변경은 강조 표시하지 않음):

git diff --color-words=.

더 복잡함(공간 변경이 강조됨)

git diff --color-words='[^[:space:]]|([[:alnum:]]|UTF_8_GUARD)+'

일반적으로:

git diff --color-words=<re>

<re>는 변경 사항을 식별하기 위해 "단어"를 정의하는 정규식입니다.

이것들은 변경된 "단어"에 색을 칠한다는 점에서 덜 시끄럽습니다, 반면에 단지 사용합니다.--word-diff-regex=<re>일치하는 를 색상이 지정된 "단어"로 둘러싸는 -/+마커

git diff --color-words="[^[:space:]]|([[:alnum:]]|UTF_8_GUARD)+"

위 정규식(Thomas Rast에서)은 문장부호/문자 수준에서 디프래그먼트를 구분하는 적절한 작업을 수행합니다.--word-diff-regex=.).

저는 여기에 결과물의 스크린샷을 올렸습니다.


업데이트:

기사에는 몇 가지 좋은 제안이 있습니다.특히,contrib/에는 깃레의나무가 .diff-highlight세부적인 강조 표시를 보여주는 perl 스크립트입니다.

빠른 사용 시작:

$ curl https://git.kernel.org/cgit/git/git.git/plain/contrib/diff-highlight/diff-highlight > diff-highlight
$ chmod u+x diff-highlight
$ git diff --color=always HEAD~10 | diff-highlight | less -R

질문에서 Vim에 대한 당신의 언급을 고려할 때, 이것이 당신이 원하는 답인지 확신할 수 없습니다 :) 하지만 Emacs는 이것을 할 수 있습니다.을 열고당신이 diff에 하세요.diff-mode이 (파일 이름)인 )foo.diff또는foo.patch자동으로 발생합니다. 그렇지 않으면 입력합니다. diff-mode ), 관심 있는 펑크로 이동하여 히트합니다RET.refine-hunk또는 파일을 한 번에 한 번에 한 번에 한 번씩 단계적으로 진행하면 자동으로 정제됩니다.

NodeJS를 설치하는 데 아무런 문제가 없다면 "diff-so-so-discovery"라는 패키지가 있습니다(https://github.com/so-fancy/diff-so-fancy), 는 설치가 패키지는 설치가 매우 쉽고 완벽하게 작동합니다.

npm install -g diff-so-fancy
git diff --color | diff-so-fancy | less -R

편집: 방금 그것이 실제로 공식 디프 하이라이트의 포장지라는 것을 알았습니다...적어도 나와 같은 펄 공포증 환자들을 위해 설치하는 것이 더 쉽고 깃허브 페이지는 잘 문서화되어 있습니다 :)

문자별 차이 도구는 모르지만 단어별 차이 도구인 wdiff가 있습니다.

UNIX/Linux의 상위 4개 파일 차이 도구 – Diff, Colordiff, Wdiff, Vimdiff 예를 참조하십시오.

조금 조사해 본 결과, 이 질문이 최근에 Vim 메인 메일링 리스트에 두 번 올랐다는 것을 알게 되었습니다.NrrwRgn 플러그인은 두 모두 언급되었습니다(두 개의 좁은 영역을 만들고 구분).Christian Brabandt가 설명한 NrrwRgn을 사용하는 것은 해결책이라기보다는 해결책처럼 느껴지지만, 아마도 그것으로 충분할 것입니다.

저는 NrrwRgn을 사용해 보았고 :diffith와 함께 단일 파일의 일부 내에서 문자별 차이를 설명하는 데 실제로 유용했습니다.하지만 많은 키 입력이 필요했습니다.내 Vimscript는 녹슬었지만, 스크립트일 수도 있습니다.아마도 NrrwRgn은 원하는 기능을 제공하도록 향상될 수 있습니다.

생각은?

언급URL : https://stackoverflow.com/questions/3231759/how-can-i-visualize-per-character-differences-in-a-unified-diff-file

반응형