"diff"명령으로 내 벅을 최대한 활용하려면 어떻게해야합니까?


9

나는 diff행운이나 인내심없이 과거에 리눅스 명령을 사용해 보았습니다 . 나는 보통 DiffMerge 또는 Kdiff와 같은 GUI 유틸리티를 사용합니다.

최근에 diffssh를 통해 원격 시스템의 파일을 비교 하기 위해 다시 사용하려고 시도 했으며 -y / --side-by-side옵션이 매우 유용하다는 것을 알았지 만 여전히이 유틸리티를 최대한 활용하지 않는 것 같습니다.

그래서 나는 다음을 달성하는 방법이 궁금합니다.

  1. 변경 내용을 강조 표시하거나 색상 코딩을 사용하여 출력을보다 읽기 쉽게 만듭니다.
  2. 병합-차이점이있는 줄을 선택하고 파일 중 하나에 변경 사항을 적용합니다

또한 인터넷 검색을 할 때 좋은 예를 많이 찾지 못했기 때문에 diff를 최대한 활용하기위한 Linux-fu 비밀이 있다면 공유 할 수 있습니까? 나는 주로 텍스트 기반 구성 파일을 비교할 것이지만 모든 요령과 팁은 훌륭 할 것입니다.

참조 용 -DiffMerge 유틸리티는 색상 강조 표시와 함께 변경 사항을 쉽게 표시합니다. 상단의 아이콘을 사용하면 "모두 표시", "차이 표시"및 "컨텍스트와의 차이 표시"보기 사이를 전환 할 수 있습니다. 명령 프롬프트에서이 기능 중 일부를 좋아할 것입니다.

추신 : 나는 또한 매우 유용하다고 생각되는 또 다른 옵션은 간결하고 읽기 쉬운 블로그 게시물--suppress-common-lines 에서 배운 것입니다 .


3
vimdiff를 꽤 많이 사용합니다.
— nicerobot

@nicerobot이 답변을 게시 할 수 있습니다-매우 유용하고 유용한 도구입니다.
— rozcietrzewiacz

당신은, 그것의 무료 ..... 죄송합니다 그것을 도울 수 없습니다 : D
— whoami

나는 Emacs에서 대부분의 diffing을한다.
— Gilles 'SO- 악마 중지

@whoami-무엇?
— cwd

답변:


9

특별한 순서는 없습니다 :

  • meld 아주 좋은 diffs와 삼원 병합을 수행하는 아주 좋은 diff 프로그램입니다.
  • git config --global merge.conflictstyle diff3와 같은 도구에 사용하기위한 3 방향 병합 출력을 제공합니다 meld.
  • wdiff않는 단어의 경우 차이점, 아주 좋은을 색 :wdiff -w "$(tput bold;tput setaf 1)" -x "$(tput sgr0)" -y "$(tput bold;tput setaf 2)" -z "$(tput sgr0)" ...
  • diff출력의 균열을 최소화하기 위해 일반적으로 --ignore-all-space( -w) 옵션을 사용합니다
  • diff-ignore-moved-lines* 라벨에 표시된 내용을 수행합니다.
  • difff* 주어진 필드에서 일치하는 줄만 다른 것으로 사용할 수 있습니다.

면책 조항 : 저는 저자이며 CLI 및 GUI diffing 및 병합에 도움이되도록 개발했습니다.


1
나는 또한 diffuse꽤 많이 사용 합니다.
— Arcege

diff -u도 매우 간단합니다.
— 개브.


3

diff에서 채색하려면 http://colordiff.sourceforge.net/ 을 참조 하십시오 . 이것은 diff를 감싸는 래퍼 일 뿐이므로 모든 명령 옵션이 여전히 작동합니다.

우분투가있는 경우 다음과 같이 작성하십시오.

    # sudo apt-get install colordiff

유스 케이스를 충족시키지 못할 위험을 감수하는 것은 많은 확산 및 병합 도구 (명령 행 및 GUI 도구)와 잘 통합 git되는 매우 유용한 VCS 입니다. 옵션이라면 시도해보십시오.


1

시험 sdiff

diff함께 사용할 병합 스크립트를 작성하는 옵션 ( -e또는 -ed)이 있습니다.ed

sdiff, diff그리고 ed지금 당신이 가서 쉘의 일부가되어야합니다.

버전 관리 소프트웨어는 아마도 가지고 diff및 merge내장 도구를.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.