[git] ‘git diff’가 호출기를 사용하지 못하게하려면 어떻게합니까?

기본적으로 호출기 git diff를 사용 하는 명령 줄 스위치 와 다른 명령을 사용하는 다른 명령이 less있습니까?

나는 그것을 고양이에게 파이프 할 수는 있지만 모든 구문 강조 표시를 제거한다는 것을 알고 있습니다.

나는 글로벌 .gitconfig의 호출기를 cat GITPAGER=cat(또는 이와 비슷한 것)으로 설정할 수 있다는 것을 알고있다 . 그러나 나는 때때로 (diff의 크기에 따라) 호출기를 갖기를 원합니다.

그러나 명령 행 스위치가 있으면 선호합니다. 매뉴얼 페이지를 통해 하나를 찾을 수 없습니다.



답변

--no-pagerGit에게 호출기를 사용하지 말라고 지시합니다. 옵션 -F을 전달하면 less출력이 단일 화면에 맞는 경우 페이징하지 않도록 지시합니다.

용법:

git --no-pager diff

주석의 다른 옵션은 다음과 같습니다.

# Set an evaporating environment variable to use 'cat' for your pager
GIT_PAGER=cat git diff

# Tells 'less' not to paginate if less than a page
export LESS="-F -X $LESS"
# ...then Git as usual
git diff


답변

이전 답변에서 언급했듯이 내용이 한 화면 미만인 경우 -F옵션을 전달하면 옵션 less이 종료됩니다. 그러나 이렇게하면 화면이 재설정되고 내용이 표시되지 않습니다.

-X옵션은 그 행동을 멀리한다. 따라서 콘텐츠 양에 따라 조건부 페이징을 사용하려면 다음을 사용하십시오.

git config --global --replace-all core.pager "less -F -X"


답변

사용하다

git config --global core.pager cat

모든 리포지토리의 모든 명령에 대한 호출기를 제거합니다.

pager.<cmd>대신 설정 을 사용하여 단일 Git 하위 명령에 대한 페이징을 비활성화 core.pager할 수 있으며 Git 리포지토리마다 설정을 변경할 수 있습니다 (생략 --global).

자세한 내용을 man git-config보고 검색 pager.<cmd>하십시오.


답변

설명서의 최근 변경 사항에 대한 기본 옵션을 제거하는 다른 방법 less( “기본 옵션”은 FRSX)이 언급되어 있습니다.

이 질문에 대해서는 다음과 같습니다 (git 1.8 이상)

git config --global --replace-all core.pager 'less -+F -+X'

예를 들어 Dirk Bester 는 다음 과 같이 의견을 제안 합니다 .

export LESS="$LESS -FRXK"

Ctrl-C에서 종료 와 컬러 diff를 얻을 수 있도록 less.

윌슨 F논평그의 질문 에서 다음 과 같이 언급 했다.

가로 스크롤을 덜 지원하므로 줄이 잘릴 때 한 번에 한 화면 종료가 비활성화되어 사용자가 텍스트를 왼쪽으로 스크롤하여 잘린 부분을 볼 수 있습니다.


이러한 수정 사항은 git 1.8.x에 이미 표시되어 있습니다. ” 항상 호출기를 사용하십시오git diff “(설명 참조). 그러나 설명서는 방금 수정 되었습니다 (git 1.8.5 또는 1.9, Q4 2013 ).

Git 명령에 사용되는 텍스트 뷰어 (예 : ‘less’)
이 값은 쉘에 의해 해석됩니다.

선호 순서는 다음과 같습니다.

  • $GIT_PAGER환경 변수
  • 그런 다음 core.pager구성
  • 다음 $PAGER,
  • 그리고 컴파일 타임에 선택된 기본값 (보통 ‘less’).

LESS환경 변수를 설정하고, 그것을 힘내를 설정 FRSX
(만약 LESS환경 변수 설정, 힘내 전혀 변경하지 않음).

에 대한 Git의 기본 설정을 선택적으로 무시 하려면 예를 들어로 LESS설정할 수 있습니다core.pagerless -+S .
이것은 Git에 의해 쉘로 전달되며 최종 명령은로 변환됩니다 LESS=FRSX less -+S. 환경은 명령에 S긴 줄을 자르 도록 옵션 을 설정하도록 지시 하지만 명령 줄은 긴 줄을 접도록 기본값으로 재설정합니다.


새로운 문서 문구 뒤에있는 커밋 97d01f2a 를 참조하십시오 .

구성 : core.pager문서 재 작성

텍스트는 언급 core.pagerGIT_PAGER우선 순위의 전체적인 그림을 제공하지 않고. git var(1) 문서 에서 더 나은 설명을 차용하십시오 .

시스템 전체, 전역 및 저장소 별 구성 파일을 허용하는 메커니즘의 사용은이 특정 변수로 제한되지 않습니다. 단락을 명확히하기 위해 그것을 제거하십시오.

환경 변수 LESS가 Git의 기본값으로 설정되는 방법과 선택적으로 사용자 정의하는 방법을 설명하는 부분을 다시 작성하십시오 .


참고 : 커밋 b327583 ( 2014 년 4 월 Matthieu Moymoy , git 2.0.x / 2.1, Q3 2014)은 기본적으로 S를 제거합니다.

호출기 : 기본적으로 $ LESS에서 ‘S’제거

기본적으로, 힘내 설정하는 데 사용 $LESS-FRSX경우 $LESS사용자가 설정되지 않았습니다. 플래그는 실제로 힘내에 대한 이해 ( 그리고 때로는 이하로 출력 망할 놈의 파이프가 짧고, 때문에 망할 놈의 파이프 출력을 색깔 때문에).
반면에 플래그 (긴 줄 자르기)는 Git과 관련이 없으며 사용자 선호도의 문제입니다. 힘내 사용자가 기본값 을 변경하도록 결정해서는 안됩니다 .
FRXFXR
SLESS

보다 구체적으로,이 S플래그는 다음과 같은 패치로 인해 호출기 내에서 신뢰할 수없는 코드를 검토하는 사용자에게 해를줍니다.

-old code;
+new good code; [... lots of tabs ...] malicious code;

다음과 동일하게 나타납니다.

-old code;
+new good code;

이전 동작을 선호하는 사용자는 여전히 $ LESS 환경 변수를 -FRSX명시 적으로 설정하거나 core.pager를 ‘ less -S‘로 설정할 수 있습니다.

설명서는 다음과 같습니다.

환경은 S옵션을 설정하지 않지만 명령 행은 긴 행을 자르도록 지시합니다.
마찬가지로, 설정 core.pagerless -+F비활성화합니다 F옵션은 “비활성화 명령 줄에서 환경에 의해 지정 quit if one screen의”동작을 less.
하나는 특정 명령에 대한 몇 가지 플래그를 특별히을 활성화 할 수 있습니다 : 예를 들어, 설정 pager.blame하려면 less -S에만 라인 절단 할 수 있습니다 git blame.


답변

전역 구성에서 특정 출력에 대해 호출기를 비활성화 / 활성화 할 수 있습니다.

git config --global pager.diff false

또는 core.pager 옵션을 설정하려면 빈 문자열을 제공하십시오.

git config --global core.pager ''

이것은 cat당신이 말하는대로 설정하는 것보다 내 의견으로는 더 낫습니다 .


답변

파이핑시 비활성화 된 색상 관련 :

--color채색이 비활성화되지 않도록하는 데 사용하십시오 .

git diff --color | less -R

또는 강제로 구성하십시오 (예 : .gitconfig).

[color]
        ui = on

git diff | less -R

비색 도구의 경우 다음을 사용하십시오.

git diff --no-color | some-primitive-tool

환경 변수 LESS=-R(예 : .bashrc)를 내 보내면 기본적으로 “less”로 색상 지원이 켜집니다.

git diff | less


답변

이것은 Linux에서 Git 버전 2.1.4와 함께 작동했습니다.

git config --global --replace-all core.pager cat

이것은 cat대신 Git을 사용하게 합니다 less. 페이징없이 화면에 cat출력을 덤프합니다 diff.