유니파이드 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
'IT' 카테고리의 다른 글
mariadb를 사용하도록 MAMP 구성 (0) | 2023.08.31 |
---|---|
인라인 블록 DIV를 컨테이너 요소의 맨 위에 정렬 (0) | 2023.08.31 |
더 나은 리눅스 셸? (0) | 2023.08.26 |
UITap 제스처 인식기 - 터치업이 아닌 터치다운에서 작동하도록 합니까? (0) | 2023.08.26 |
UITableView에서 테이블 헤더의 높이를 설정하는 방법은 무엇입니까? (0) | 2023.08.26 |