계속하라는 메시지가 표시되지 않도록 git log를 만드는 방법은 무엇입니까?


92

함께 속하는 몇 개의 git 저장소와이를 반복 할 간단한 배치 / bash 파일이 있습니다. 나는 종종 그들이 어떤 상태에 있는지 신속하게 확인하기 위해 로그 명령을 사용하여 반복합니다. 이것은 한 가지를 제외하고 잘 작동합니다. 커밋 메시지가 내 콘솔이 넓거나 여러 줄이있는 경우, git 줄을 보여주고 (END)와 함께 개행을 보여주고 계속하려면 q 를 눌러야합니다 (나는 더 많은 것을 통해 출력을 파이프 한다고 생각합니다). 예:

> gitloop . "git log --decorate=short --pretty=oneline -n1"
18629ae238e9d5832cb3535ec88274173337a501 (HEAD, origin/master, master) short log

625fb891b9b0b8648459b07ace662ae3b7773c7f (HEAD, origin/master, origin/HEAD, master) short log

dc0838118266ba8570ea338c1faddfe8af0387bb (HEAD, origin/work, origin/master, work, master) oops loooooooooooooong log
-(END)

q 를 두 번 눌러야하기 때문에 다소 불편한 반면, 모든 oneliner를 한 번에보고 싶습니다.

이 동작을 비활성화하려면 어떻게해야합니까 (이 로그 형식을 계속 유지하면서 바람직 함)?


답변:


154

Git에는 호출기를 비활성화하는 옵션이 있습니다.

git --no-pager log --decorate=short --pretty=oneline -n1

호출기가 줄을 자르고 그 동작을 유지하려면 파이프를 cut...

git --no-pager log --decorate=short --pretty=oneline -n1 | cut -c 1-$COLUMNS

... 또는 GIT_PAGER호출 전에 환경 변수 를 설정하십시오 .

GIT_PAGER="cut -c 1-${COLUMNS-80}" git --no-pager log --decorate=short --pretty=oneline -n1

--no-pager필요할 때이 옵션에 대한 바로 가기를 기본값으로 설정하거나 더 나은 방법 이 있습니까? 에 앨리어싱 gitnpgit --no-pager생각했지만 더 나은 솔루션이 있다고 생각합니다.
Islam Azab

1
@IslamAzab, 모든 자식 호출에 대해 호출기를 비활성화하는 별칭 git/usr/bin/git --no-pager사용할 수 있습니다.
mrkmg

1
@WarrenP git에는 호출기가 내장되어 있지 않습니다. 대신 Unix 철학을 따르고 $PAGER. 다른 많은 잘못 작성된 도구와 달리 무작위로만 git사용하는 $PAGER대신 항상 사용 합니다. 유일한 마법 git이는 경우이다 $LESS되고 정의되지 않은 , 그것은 정의합니다 $LESSFRX. 자세한 내용은 github.com/git/git/blob/master/Documentation/config.txt#L766 을 참조하십시오.
Mikko Rantalainen

@WarrenP git는 git이 페이징 이 필요할 때마다 사용할 사용자 지정 값을 정의 할 수 있는 재정의 GIT_PAGER 를 제공합니다 PAGER.
Mikko Rantalainen

1
간단한 경우 그 수정 방금 자식에 대한 행동 : 수출 GIT_PAGER = 고양이
Stragulus

16

특히 하위 명령을 사용할 때 호출기 를 영구적으로 비활성화하는 문제에 대한 또 다른 해결책 log:

  • 현재 저장소에만 해당 :
    git config pager.log false

  • git 설치 (즉, 컴퓨터의 모든 저장소) :
    git config --global pager.log false

짐작할 수 있듯이, 다른 하위 명령에 대해 선택적으로 호출기 거나 꺼야 하는 경우에도 동일하게 작동합니다 .
예. for branch(분기를 인쇄하는) 부속 명령은

git config pager.branch false


제안 된 솔루션은

  • git --no-pager특정 명령을 실행할 때마다 사용 합니다.
    가능한 한 매번 입력하고 싶지 않기 때문입니다.

  • git --no-pager대한 별칭으로 지정 git
    왜냐하면 암시 적 전역 구성 을 피 하거나 경우에 따라 호출기 를 활성화하기 를 원 하기 때문입니다.

  • PAGER또는 같은 환경 변수에 의존합니다 GIT_PAGER.
    그렇게하려면 현재 터미널 세션에 설정되어 있는지 확인해야합니다. 그리고 새 터미널이 생성 될 때마다 자동으로 사용자 지정 값으로 설정되도록하려면 ~/.bashrc. 큰 문제는 아닙니다. 그러나 이러한 부트 스트랩 파일은 다른 응용 프로그램에서도 자주 변경되며 Git에서 사용하는 파일뿐만 아니라 다른 많은 항목을 포함합니다. 따라서 이론적으로 git 관련 설정을 git config예를 들어 넣는 것보다 지정하는 것이 좋습니다 ~/.bashrc.


해제에 대한 대체 솔루션 pager에 대한 모든 하위 명령이 지정하는 것입니다 cat페이징에 사용하는 유틸리티 자식과 같이

  • git config core.pager cat 또는
  • git config --global core.pager cat

내 대답은 아래 내용을 약간 바꿔 놓은 것입니다.
"페이저를 사용하지 못하도록 git diff?"
https://stackoverflow.com/a/6986231/6103242

다른 관련 토론을 지적하기 위해 참조됩니다.


3

모든 명령에 대해 호출기를 비활성화합니다.

git config --global core.pager '' 

2

--no-pager가 작동하지 않는 경우를 대비하여 더 적은 -F로 파이프합니다.

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