왜 git에 의해 불필요하게 덜 실행 되는가?


22

git branchbash 또는 csh에서 실행할 때 자동으로 출력을 통해 파이프합니다 less. 그러나 저장소에 몇 개의 브랜치 만 있으면 불필요합니다. 종료되면 일단 브랜치 목록이 사라지기 때문에 성가신 일입니다.

~/.gitconfig파일 및 로컬 .git/config파일을 확인 하면 호출기 또는이를 유발하는 다른 항목에 대한 정보가 없습니다. 그렇지 않으면 웹 검색에서 찾은 것이 도움이되거나 약속 된 것이 없습니다.

왜 이런 일이 발생하며 less필요할 때 (예 : git log많은 역사가있을 때 수행 할 때) 달리 실행 하지 않으려면 어떻게해야 git branch합니까?


4
일반적으로 git은 어떤 명령에서 어떤 출력이 나오는지 알지 못하므로 기본적으로 페이저를 통해 모든 것을 전송합니다.
이카루스

6
새로운 nix 설치에서 가장 먼저해야 할 일은에 설치 export LESS=-X하는 것 .profile입니다. 이렇게 하면 화면 을 "정리"하지 않아도됩니다 . 나는 종종 물건을 잘라 붙여 넣거나 참조로 사용해야하기 때문에 표준 설정으로 화면을 지우는 것이 싫어 .
피터-모니카

3
@Peter 명확하게하기 위해 (말장난 의도는 없음) 화면 지우기 동작을 원하지 않는 사람 만 그렇게해야합니다.
David Z

@icarus : 논리적으로 보입니다. 그러나 최근에 내 행동이 바뀌 었습니다. 왜 그런지 잘 모르겠습니다. 회사 보안 담당자가 "높은"환경 변수를 변경하여 다른 사람의 직업을 만드는 것이 어려워 보이지 않는 것 같습니다. 어쨌든, git은 현명한 행동으로 생각한 것에서 줄을 멈 았을 때 출력이 손실되는 방식으로 줄을 통해 단일 라인 출력을 실행하는 것으로 갑자기 바뀌 었습니다.
GreenMatt

최근에 동작이 변경된 경우 LESS 변수 설정이 시스템 전체 쉘 시작 파일 (예 : / etc / profile, /etc/profile.d/*, /etc/bash.bashrc)에 추가되었을 가능성이 있습니다. 환경에이 변수가 있습니까?
루스

답변:


35

다음을 설정할 수 있습니다.

git config --global core.pager 'less -FRX'

이것은 그 보장합니다 less의지를

  • 첫 번째 화면에 전체 파일을 표시 할 수 있으면 종료합니다 ( F).
  • 터미널 형식에 대한 원시 제어 문자를 출력합니다 ( R).
  • 긴 줄 자르기 ( S)
  • 초기화 / 해제 문자열을 터미널에 보내지 마십시오-종료시 화면이 지워지지 않도록합니다 ( X)

편집 : SPeter A. Scheider의 의견에 따라 옵션을 제거했습니다 .


7
--global현재 저장소에만 적용 하려면를 생략하십시오 .
mosvy

8
환경 변수 LESS를로 설정하고 -FRX와 S를 추가하여 맛볼 수 있습니다.
이카루스


11
대부분의 OP는 행동이 일반적으로 성가신 것을 발견합니다. 환경 변수를 설정할 수 export PAGER='less -FRSX'있고 git이 환경 변수 를 존중 한다고 가정 합니다 (특정 git 구성이 없음). Btw -S는 출력을 자동으로 삭제하기 때문에 위험합니다.
피터-모니카 복원

4

튜닝 less동작에 대한 몇 가지 훌륭한 답변이 있지만 |more원할 때 회색 수염 손가락이 타이핑에 익숙하기 때문에 여전히 git보다 수은에 더 잘 적응 하고 있기 때문에

git config --global core.pager cat

3
에 대한 매뉴얼 페이지 git-config의 값은 core.pager쉘에 의해 해석되도록되어 있습니다. 로 설정하면 존재하지 않을 가능성이 큰 no명령을 실행하려고 시도한 no다음 단순히 내용을 출력합니다. 여전히 헤드에 오류 메시지가 표시됩니다. 아마 당신이하고 싶은 것은 cat대신 에 설정하는 것입니다.
QIS

1
그것은 좋은 정보이지만, 내가 좋아하는 것은 아무것도 실행하지 않는다는 입니다. 는 cat쓸모가, 나는 특히하지 (참조, 무엇 고양이 변화에 테이너 util을 리눅스를 신뢰하지 않는 인용 파일 사태를 ). 어쩌면 대신 "하지 마십시오"를 사용해야합니다. 그러한 프로그램이 존재할 가능성은 적습니다. ls
dgc

7
설정 core.pager빈 문자열로 ( git config core.pager '') 또는에 cat없는 전혀 아무것도 실행합니다. 나를 믿지 않으면 스스로 해결할 수 있습니다. ;-) 같은 더미 명령으로 설정해야 할 이유가 없습니다 no.
mosvy

감사합니다! 빈 문자열이 명령 실행을 유발하지 않을 줄 몰랐습니다. 에 관해서는 cat, git이 호출기 코드에서 그 문자열에 대해 특별한 경우를 가지고 있다고 말하고 cat있습니까? 나는 그것이 실행될 것으로 기대한다 cat.
dgc

실제로 그런 것 같습니다. 에 가드. 그러나 또한 좋습니다 : 나는 항상 git에 대한 나의 불쾌감을 정당화 할 더 많은 방법을 찾고 있습니다.
dgc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.