IT

힘내 분기 명령은 'less'처럼 동작합니다

lottoking 2020. 3. 27. 08:12
반응형

힘내 분기 명령은 'less'처럼 동작합니다


git branch명령을 사용하여 모든 분기를 나열하면의 출력이 표시 git branch | less됩니다.

이 명령 git branchls파일 과 마찬가지로 분기 목록을 표시해야 합니다.

이것이 내가 얻는 출력입니다.

여기에 이미지 설명을 입력하십시오

기본 동작은 어떻게 얻 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

반응형