힘내 분기 명령은 'less'처럼 동작합니다
git branch
명령을 사용하여 모든 분기를 나열하면의 출력이 표시 git branch | less
됩니다.
이 명령 git branch
은 ls
파일 과 마찬가지로 분기 목록을 표시해야 합니다.
이것이 내가 얻는 출력입니다.
기본 동작은 어떻게 얻 git branch
습니까? 페이징 출력의 원인은 무엇입니까?
나는 ZSH를 oh_my_zsh
(Git에는 아무것도 없음) 과 함께 사용 하고 있으며 .gitconfig
다음과 같습니다
[user]
email = myemail@mail.com
name = Dennis Haegler
[push]
default = simple
[merge]
tool = vimdiff
[core]
editor = nvim
excludesfile = /Users/dennish/.gitignore_global
[color]
ui = true
[alias]
br = branch
ci = commit -v
cam = commit -am
co = checkout
df = diff
st = status
sa = stash
mt = mergetool
cp = cherry-pick
pl = pull --rebase
[difftool "sourcetree"]
cmd = opendiff \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh
\"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
trustExitCode = true
위에서 언급했듯이 이것은 Git 2.16에서 도입 된 기본 동작 변경이었습니다 .
config 설정을git branch
사용하면 기본적으로 페이징 된 출력을 다시 끌 수 있습니다 .pager.branch
git config --global pager.branch false
다른 답변에서 지적했듯이 git less
은 대부분의 명령에 대해 기본적으로 페이저로 기본적으로 파이핑됩니다 .
그러나 중요한 점 은 LESS 환경 변수가 설정되지 않은 경우 Git이 FRX로 설정 하고 결과적으로 명령 출력이 짧을 때 호출기가 사용되지 않은 것처럼 사용자가 볼 수있는 동작이 동일하다는 것입니다. 지점이 거의없는 경우). 적은 사람을 참조하십시오 :
-F 또는 --quit-if-one-screen 화면
전체 파일을 첫 번째 화면에 표시 할 수 있으면 자동으로 종료되지 않습니다.-R 또는 --RAW-CONTROL-CHARS
[...] ANSI "color"이스케이프 시퀀스는 "raw"형식으로 출력됩니다.-X 또는 --no-init
termcap 초기화 및 초기화 해제 문자열을 터미널로 전송하지 못하게합니다. 초기화 해제 문자열이 화면 지우기와 같은 불필요한 작업을 수행하는 경우 때때로 바람직합니다.
설명하는 동작을 얻는 경우 $LESS
다른 것으로 설정 했을 가능성이 높으며 설정을 해제하면 긴 출력을 위해 "pager"동작을 유지하면서 문제가 해결됩니다. 또는 파일에 다음 $LESS
을 추가하여 그대로 유지하면서 동작을 활성화 할 수 있습니다 .gitconfig
.
[core]
pager = less -FRX
호출기 항목을 정말로 싫어하는 경우 전체 또는 명령별로 비활성화 할 수 있습니다 (다른 답변 참조).
아니 의미를 주장하지만, 당신이 얻고있는 동작은하는 것입니다 기본. 그렇기 때문에 다른 것을 요구하지 않을 때 얻을 수 있습니다. 기본적으로 branch
(및 다른 많은 git 명령)은 터미널로 출력을 보낼 때 호출기를 사용합니다.
--no-pager
옵션 을 사용하여이 기본값을 무시할 수 있습니다
git --no-pager branch
또는 출력을 파일로 리디렉션하면 git은 터미널에 쓰지 않는 것을 감지해야하므로 호출기를 사용하지 않아야합니다. (반면에, 그것은 스크립팅 유스 케이스를 제안합니다.이 경우 git for-each-ref
에는 우선적으로 와 같은 배관 명령 사용을 고려해야 합니다 git branch
.)
이 자식 행동은 나에게 점점 더 짜증났다. less
예를 들어 태그를 나열하고 싶을 때 태그 목록을 얻었습니다 .
하나는 기본 변경하여이 동작을 제어 할 수 있습니다 망할 놈의 호출기 에 cat
대신 less
. 차라리 에디터보다는 iTerm에서 스크롤하고 싶습니다. 원할 때 편집기를 사용하고 싶습니다.
그래서:
git config --global core.pager cat
도움이 되길 바랍니다.
~/.gitconfig
이 문제를 해결하기 위해 업데이트하려는 사람들 은 다음과 같습니다.
[pager]
branch = false
힘내 분기 명령은 'less'처럼 동작합니다
기본적으로 git은 pager에서 출력을 열기 때문에 (적어도 우분투에서는) 승인 된 답변 은 pager를 완전히 대체 하므로 출력이 너무 길면 좋아하지 않을 수 있습니다.
출력기를 less
터미널 높이보다 "스크롤"하지 않도록 페이저를 바꾸는 것이 좋습니다 .
git config --global --replace-all core.pager "less -F -X"
다음을 수행하십시오.
[alias]
br = !git --no-pager branch
https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables
GIT_PAGER은 명령 행에 여러 페이지 출력을 표시하는 데 사용되는 프로그램을 제어합니다. 이것이 설정되어 있지 않으면 PAGER가 폴백으로 사용됩니다.
이 문제를 해결하기 위해 쉘에서 PAGER 및 GIT_PAGER을 설정 해제 할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/48341920/git-branch-command-behaves-like-less
'IT' 카테고리의 다른 글
Bash를 사용하여 명령의 모든 출력을 억제하는 방법은 무엇입니까? (0) | 2020.03.27 |
---|---|
장고 개발 IDE (0) | 2020.03.27 |
배열에 새로운 요소를 추가하는 방법? (0) | 2020.03.27 |
MySQL에서 테이블 열 이름을 가져 옵니까? (0) | 2020.03.27 |
배치 파일에 어떤 주석 스타일을 사용해야합니까? (0) | 2020.03.27 |