때때로 내가 사용하는 git 하위 모듈을 통해 grep을 수행해야 합니다.
git submodule foreach 'git grep x'
그러나 zsh로 전환한 이후에는 옵션 없이도 각 하위 모듈이 더 적은 수의 프롬프트를 여는 것으로 나타났습니다. 나는 모든 출력을 터미널에 인쇄하는 것을 선호합니다.
내 현재 솔루션은 다음을 호출하는 것입니다.
git submodule foreach 'git grep x' > /tmp/a && cat /tmp/a
이로써 내가 원하는 것을 달성했지만 옵션이나 더 우아한 솔루션이 누락된 것 같은 느낌을 지울 수 없습니다. 그것을 가지고?
답변1
git에서 사용하는 페이지네이터를 변경해보세요:
GIT_PAGER="cat" git submodule foreach 'git grep x'
또는 더 적게 사용하고 싶지만 출력이 화면에서 벗어날 때만 사용하려는 경우:
GIT_PAGER="less -FX" git submodule foreach 'git grep x'
프로젝트별로 설정된 페이지네이터를 사용할 수도 있고 git config
, 물론 전역적으로 환경 변수를 설정할 수도 있습니다.
답변2
다른 방법을 다루려면 다음을 수행하십시오.
방법 1:--nopager
git submodule foreach 'git --nopager grep x'
방법 #2: 호출기를 완전히 비활성화합니다.
git config --global core.pager cat
git-config 매뉴얼 페이지에서:
core.pager git이 출력을 페이징하는 데 사용할 명령입니다. 이는 GIT_PAGER 환경 변수를 사용하여 재정의할 수 있습니다. 호출기를 실행할 때 LESS 환경 변수가 설정되지 않은 경우 git은 이를 FRSX로 설정합니다. 이러한 설정은 LESS 변수를 다른 값으로 설정하여 변경할 수 있습니다. 또는 core.pager 옵션을 설정하여 프로젝트 또는 전역 기반에서 이러한 설정을 재정의할 수 있습니다. core.pager 설정은 위의 LESS 환경 변수 동작에 영향을 미치지 않으므로 이러한 방식으로 git의 기본 설정을 재정의하려면 명시적으로 설정해야 합니다. 예를 들어 이전 버전과 호환되는 방식으로 S 옵션을 비활성화하려면 core.pager를 less -+S로 설정합니다. 이는 git에 의해 쉘로 전달되어 최종 명령을 LESS=FRSX less -+S로 변환합니다.
방법 #3:pager.<cmd>
또한 페이저를 사용하여 개별 git 하위 명령에 대한 페이징을 비활성화할 수도 있습니다. core.pager 대신 설정을 사용하고 git 저장소별로 설정을 변경할 수 있습니다(-global 생략).
git config --global pager.grep cat
git-config 매뉴얼 페이지에서:
휴대용 소형 무선 호출기. 이 값이 부울인 경우 tty에 쓸 때 특정 git 하위 명령에 대한 출력 페이징을 켜거나 끕니다. 그렇지 않으면 호출기 값으로 지정된 호출기를 사용하여 하위 명령에 대해 호출이 켜집니다. --paginate 또는 --no-pager가 명령줄에 지정된 경우 이 옵션보다 우선합니다. 모든 명령에 대해 페이징을 비활성화하려면 core.pager 또는 GIT_PAGER를 cat으로 설정하세요.
-F -X
방법 #4: less( ) 의 동작 수정
Less를 화면 크기보다 큰 콘텐츠가 있는 파일만 "조건부" 페이지로 재구성하고( -F
) 나중에 화면을 지우지 않도록 Less를 비활성화할 수 있습니다( X
).
git config --global core.pager less -F -X
인용하다
답변3
이 경우 전체 명령을 다시 페이지 지정했습니다.
git submodule ... | less
그러나 하위 명령의 잠재적인 형식이 손실됩니다.
그런 다음 "git status"에 동일한 문제가 있다는 것을 깨달았으므로 "git status"에 대한 답변을 읽은 후git 상태를 출력하기 위해 호출기를 여는 방법은 무엇입니까?"나는 추천하고 싶다
git config --global pager.submodule "less -FX"