Programing

git diff-긴 줄을 처리합니까?

lottogame 2020. 4. 18. 09:26
반응형

git diff-긴 줄을 처리합니까?


파일 에서 git-diff실행 하고 있지만 변경 사항이 길다.

커서 키를 사용하여 오른쪽으로 이동하면 색상 코딩이 손실되고 줄이 정렬되지 않아 변경 사항을 추적하기가 더 어려워집니다.

그 문제를 방지하거나 단순히 줄 바꿈을 만드는 방법이 있습니까?

(mingw32를 통해 git 1.5.5 실행)


출력 결과 표시 git diff는 사용중인 호출기에 의해 처리됩니다.

일반적으로 Linux에서는 less사용됩니다.

GIT_PAGER환경 변수 를 설정하여 git에게 다른 호출기를 사용하도록 지시 할 수 있습니다 . 페이징에 대해 신경 쓰지 않으면 (예를 들어, 터미널을 사용하여 뒤로 스크롤 할 수 있음) GIT_PAGER호출기를 사용하여 중지하도록 명시 적 으로 비워 두도록 시도 할 수 있습니다 . 리눅스에서 :

$ GIT_PAGER='' git diff

호출기가 없으면 줄이 줄 바꿈됩니다.

터미널이 컬러 출력을 지원하지 않는 경우 --no-color인수를 사용하거나 git config 파일의 컬러 섹션에 항목을 넣을 수도 있습니다.

$ GIT_PAGER='' git diff --no-color

또는 기본 페이저로 less를 사용하는 경우 -S줄 바꿈을 다시 사용하려면 diff를 보면서 입력 하십시오.


git config랩퍼를 설정하여 랩핑 할 수도 있습니다 .

$ git config core.pager 'less -r' 

현재 프로젝트의 호출기 설정을 설정합니다.

$ git config --global core.pager 'less -r' 

모든 프로젝트에 대해 호출기를 전체적으로 설정합니다


전체 신용와 조쉬 셰어코멘트이 대답 , 나는 그럼에도 불구하고 그래서 추가,이 자체에게 대답되어야한다 같은 느낌 :

긴 줄의 차이점을 처리하는 한 가지 방법은 단어 중심의 diff를 사용하는 것입니다. 이것은 다음과 같이 할 수 있습니다 :

git diff --word-diff

이 경우 상당히 다른 diff 출력을 얻을 수 있는데, 이는 라인 내에서 변경된 내용을 구체적으로 보여줍니다.

예를 들어 다음과 같은 것을 얻는 대신 :

diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
-this is a short line
+this is a slightly longer line

다음과 같은 것을 얻을 수 있습니다.

diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
this is a [-short-]{+slightly longer+} line

또는 채색 대신 다음과 같이하십시오.

<code> git diff </ code>의 결과

당신은 이것을 얻을 수 있습니다 :

<code> git diff --word-diff </ code>의 결과

이제 실제로 긴 줄을 비교하는 경우 원래 설명했던 호출기 상황에 문제가있을 수 있으며 다른 답변에서는 만족스럽게 해결되었습니다. 다행히도 이것이 회선상의 변경 사항을보다 쉽게 ​​식별 할 수있는 새로운 도구를 제공하기를 바랍니다.


페이저로 적게 사용하고 줄 바꿈을 영구적으로 만들려면 긴 줄 바꿈 옵션을 활성화하면됩니다.

git config --global core.pager 'less -+S'

이렇게하면 덜 사용하는 동안 입력하지 않아도됩니다.

건배


이걸 봤어 GIT_PAGER='less -r'나를 위해 일한다


맥 OSX : 덜 실행되는 동안 someone45의 '-S'를 제외한 다른 대답은 저에게 효과적이지 않았습니다. 자동 줄 바꿈을 지속하려면 다음이 필요했습니다.

git config --global core.pager 'less -+$LESS -FRX'

힘내 1.5.3 이후 ( 2007 년 9 월 )

--no-pager옵션을 사용할 수있다.

git --no-pager diff

git diff가 pager를 사용하지 못하게하려면 어떻게합니까?

v2.1부터 wrap이 기본값입니다.

Git v2.1 릴리즈 노트


8 년 후 https://superuser.com/questions/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff 에서 훌륭한 답변을 찾았습니다 .

git config core.pager `fold -w 80 | less`

이제 git diff를 폴드로 먼저 파이프 한 다음 줄입니다. 줄 바꿈, 페이지 높이가 적을 때 구문 강조 표시를 유지하십시오.


git diff의 출력을 더 많이 파이프 할 수 있습니다.

git diff | more

아니 완벽한 솔루션,하지만 gitk하고 git-gui모두이 정보를 표시하고, 스크롤을 할 수 있습니다.


지금까지 아무도 이것을 지적하지 않았습니다. 기억하기 쉽고 git config에서 추가 구성을 수행 할 필요가 없습니다.

git diff --color | less -R

"git diff"를 사용 중이고 여러 페이지를 표시하는 경우 (페이지 끝에 ":"참조)이 경우 "-S"를 입력하고 Enter를 누를 수 있습니다 (S는 대문자 여야 함). 접는 긴 줄을 토글합니다.


현재 / 기본 구성을 나열하십시오.

  $ git config --global core.pager  
    less -FXRS -x2

그런 다음 -S를 업데이트하고 생략하십시오.

  $ git config --global core.pager 'less -FXR -x2'

-S : 화면 너비보다 긴 선이 접히지 않고 잘립니다.


문제가 생길 때 종종 DiffMerge에 의지합니다. 인라인 차이 강조 기능이있는 뛰어난 차이 도구. 또한 최신 버전에서는 수평 모드를 갖는 모드를 추가했습니다.

그래도 git을 사용하도록 구성 할 수 없었습니다. 따라서 두 버전의 파일을 먼저 얻으려면 혼란을 겪어야합니다.

참고 URL : https://stackoverflow.com/questions/136178/git-diff-handling-long-lines

반응형