변경된 각 행에서 변경된 행 및 변경된 바이트 강조 표시
오픈 소스 프로젝트 Trac 은 훌륭한 diff 하이 라이터 를 가지고 있습니다. 변경된 각 라인에서 변경된 라인 과 변경된 바이트를 강조 합니다! 여기 또는 여기 를 참조 하십시오 .
bash 터미널 에서 또는 diff 출력 (패치 파일)에 동일한 색상 강조 표시 (예 : 변경된 행 및 변경된 바이트 ) 를 사용하는 방법이 있습니까?git
vim
diff-highlight
펄있는 contrib 펼쳐는 이 가능성 Trac에 그것을 사용하고 Trac의 스크린 샷과 유사 발생을 생성합니다 :
다음으로 설치 :
wget https://raw.githubusercontent.com/git/git/fd99e2bda0ca6a361ef03c04d6d7fdc7a9c40b78/contrib/diff-highlight/diff-highlight && chmod +x diff-highlight
파일 diff-highlight
을 ~/bin/
디렉토리 (또는 어디에 있든) 로 이동 한 $PATH
후 다음을 추가하십시오 ~/.gitconfig
.
[pager]
diff = diff-highlight | less
log = diff-highlight | less
show = diff-highlight | less
@cirosantilli가 제안한 단일 복사 넣기 설치 :
cd ~/bin
curl -O https://raw.githubusercontent.com/git/git/fd99e2bda0ca6a361ef03c04d6d7fdc7a9c40b78/contrib/diff-highlight/diff-highlight
chmod +x diff-highlight
git config --global pager.log 'diff-highlight | less'
git config --global pager.show 'diff-highlight | less'
git config --global pager.diff 'diff-highlight | less'
git diff
또는 git log
기타를 사용 하는 동안 옵션을 사용하십시오 --word-diff=color
(단어 차이 BTW에 대한 다른 모드도 있음)
diff-so-fancy
A는 diff
인간의 시선을 위해 설계 -highlighter.
잘라 내기 / 넣기에 짜증나 는 선행 +
/ -
를 제거하고 파일 사이에 명확한 섹션을 만듭니다.
컬러 git
(왼쪽) 대 diff-so-fancy
(오른쪽-캐릭터 레벨 하이라이트에 유의) :
당신이 원하는 경우 (오른쪽) 출력을하지만에있는 파일에 제한되지 않는 저장소 , 당신에 다음 함수를 추가 모든 파일에 그것을 사용하기 :diff-so-fancy
git
.bashrc
dsf() { git diff --no-index --color "$@" | diff-so-fancy; }
예 :
dsf original changed-file
문자 수준 강조 및 표준 diff
형식
의 비표준 형식화를 좋아하지 않지만 diff-so-fancy
문자 수준의 git
강조 표시를 원하면 의 출력 을 가져와 정말 예쁜 표준 형식 출력을 생성합니다 .diff-highlight
git
diff
기본적으로 사용에서하려면 다음을 git
추가하십시오 .gitconfig
.
[color "diff-highlight"]
oldNormal = red bold
oldHighlight = red bold 52
newNormal = green bold
newHighlight = green bold 22
[pager]
diff = diff-highlight | less -FRXsu --tabs=4
이 [pager]
섹션은 git
이미 채색 된 출력을 diff-highlight
문자 수준에서 채색 한 다음 기본을 사용하는 것보다 적게 (필요한 경우) 출력을 페이징하도록 지시 합니다 less
.
원하는 동작은 이제 git 자체에서 사용할 수 있습니다 (naught101의 주석에서 지적했듯이). 이를 활성화 활성화 호출기를 다음으로 설정해야합니다.
perl /usr/share/doc/git/contrib/diff-highlight/diff-highlight | less
/usr/share/doc/git/contrib/diff-highlight/diff-highlight
Ubuntu 13.10에서 형광펜 스크립트의 위치는 어디에 있습니까 ( doc
폴더 에있는 이유를 모르겠습니다 ). 시스템에 없으면을 사용 locate diff-highlight
하여 찾으십시오. 강조 표시 스크립트는 실행 가능하지 않으므로 (적어도 내 컴퓨터에서는) perl
.
다양한 diff와 유사한 명령에 항상 형광펜을 사용하려면 ~/.gitconfig
파일에 다음을 추가 하십시오.
[pager]
log = perl /usr/share/doc/git/contrib/diff-highlight/diff-highlight | less
show = perl /usr/share/doc/git/contrib/diff-highlight/diff-highlight | less
diff = perl /usr/share/doc/git/contrib/diff-highlight/diff-highlight | less
나는 이것을 새로운 대답으로 추가했습니다 .naught101의 코멘트가 묻혀 있고 설정이 그렇게 사소하지 않고 적어도 README 의 지침이 작동하지 않는 Ubuntu 버전 에서는 작동하지 않기 때문입니다.
나는 --color-words
옵션을 사용 하고 그것은 나를 위해 잘 작동합니다.
$ git diff --color-words | less -RS
바이트 기반 diff 용 유틸리티는 v1.7.8 1 이후 공식 Git과 함께 배포되었습니다 . 컴퓨터에 설치된 위치를 찾아 활성화하면됩니다.
Git이 설치된 위치 찾기
- Homebrew 를 통해 Git이 설치된 MacOS :
/usr/local/opt/git
- Windows 용 Git이있는 Windows : 실행
cd / && pwd -W
하여 설치 디렉토리를 찾습니다. - Linux : 대단합니다. 힘내가 설치된 위치를 당신이 이미 알고하지 않으면,
ll $(which git)
또는locate git
도움이 될 것입니다.
diff-highlight
PATH에서 찾을 수 있도록 bin 디렉토리에 링크 하십시오.
GIT_HOME='/usr/local/opt/git/' # Use the value from the first step.
ln -s "${GIT_HOME}/share/git-core/contrib/diff-highlight/diff-highlight" \
'/usr/local/bin/diff-highlight'
Git 구성에서 활성화
git config --global interactive.diffFilter diff-highlight # Use on interactive prompts
git config --global pager.diff "diff-highlight | less" # Use on git diff
git config --global pager.log "diff-highlight | less" # Use on git log
git config --global pager.show "diff-highlight | less" # Use on git show
1 다음은 v1.7.8 버전 이지만 그 이후로 많은 변경 이 이루어졌습니다.
같은 @dshepherd는 말합니다 :
이제 원하는 동작을 git 자체에서 사용할 수 있습니다.
그러나 diff-highlight
DOC에 있으며 셸에서 사용할 수 없습니다.
설치하려면 diff-highlight
사용자로 ~/bin
디렉토리하여 다음 단계를 (이것은 당신의 입력을 저장합니다)에 따라 :
$ locate diff-highlight
$ cd /usr/share/doc/git/contrib/diff-highlight #or path you locate
$ sudo make
$ mv diff-highlight ~/bin
그런 다음 .gitconfig
공식 문서로 구성하십시오 .
[pager]
log = diff-highlight | less
show = diff-highlight | less
diff = diff-highlight | less
UPD
또한 git
설치하지 않고 최신 버전에서 다음을 시도 할 수 있습니다 .
git diff --color-words=.
더 복잡한:
git diff --color-words='[^[:space:]]|([[:alnum:]]|UTF_8_GUARD)+'
Emacs에는 사용자의 요구를 충족시킬 ediff-patch-buffer 기능이 있습니다.
emacs 유형 ESC-x, ediff-patch-buffer에서 패치되지 않은 파일을 엽니 다.
프롬프트에 따라 패치 된 파일과 원본 버전의 비교를 강조 표시해야합니다.
귀하의 의견에 따라 다음은 dwdiff 만 필요한 bash 솔루션을 제공합니다.
#!/bin/bash
paste -d'\n' <(dwdiff -2 -L -c <(cat $2) <(patch $2 -i $1 -o -)) <(dwdiff -1 -L -c <(cat $2) <(patch $2 -i $1 -o -))| uniq
디피
GitLab은 Diffy https://github.com/samg/diffy(Ruby )를 사용하여 GitHub 및 diff-highlight와 유사한 출력을 얻습니다.
Diffy는 동일한 알고리즘 광고 Git을 사용하여 diff 자체를 만들고 GitLab에서 사용하는 HTML 출력을 포함하여 다양한 유형의 출력을 지원합니다.
gem install diffy
echo '
require "diffy"
puts Diffy::Diff.new("a b c\n", "a B c\n").to_s(:html)
' | ruby
산출:
<div class="diff">
<ul>
<li class="del"><del>a <strong>b</strong> c</del></li>
<li class="ins"><ins>a <strong>B</strong> c</ins></li>
</ul>
</div>
strong
변경된 바이트에 어떻게 추가 되었는지 확인하십시오 .
예, Vim은 한 줄 내에서 변경된 텍스트 강조 표시를 포함하여이 작업을 수행합니다.
참조 :h diff
및 :h 08.7
방법은 diff로 파일에 대한 자세한 내용은.
Vim은 하이라이트를 위해 상당히 간단한 알고리즘을 사용합니다. 줄에서 첫 번째로 변경된 문자를 검색 한 다음 마지막으로 변경된 문자를 검색하고 그 사이의 모든 문자를 강조 표시합니다.
즉, 한 줄에 여러 개의 하이라이트를 가질 수 없습니다. Vim의 많은 디자인 결정은 효율성을 우선시합니다.
vimdiff file1 file2
두 파일 간의 차이를 문자별로 표시합니다.
vimdiff는 vim에 포함 된 diff 도구입니다. (Vim은 + diff 옵션으로 컴파일되어야하므로으로 확인할 수 있습니다. :version
)
vim 내부에서 실행할 수도 있습니다. 자세한 :help diff
정보 및 명령은를 참조하십시오 .
'ProgramingTip' 카테고리의 다른 글
2 개의 클래스가 경우에만 CSS로 요소를 사용할 수 있습니까? (0) | 2020.10.12 |
---|---|
정상 종료 프로세스에 신호를 어떤 순서로 보내야합니까? (0) | 2020.10.12 |
"기본"크기의 50 %로 이미지 표시 (0) | 2020.10.12 |
Javascript JSON 배열 구문 분석 방법 (0) | 2020.10.12 |
PIL을 사용하여 픽셀의 RGB 제공 (0) | 2020.10.12 |