git diff를 stdout에 쓰는 방법은 무엇입니까?

기본적으로 git diff모든 +-줄을 stdout에 인쇄 하지만 (ssh를 통해 연결하는) (비안) 기계 git diff가 있으며 편집기로 연결됩니다 (어떤 것인지 알 수 없음) q. 계속 하려면 눌러야 합니다.

나는 검사기 자식 구성을 가지고 있으며 다음과 같습니다.

$ git config --list
user.name=XXX
user.email=XXX@XXX
color.ui=false
difftool.prompt=false
mergetool.prompt=false
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=XXX
branch.master.remote=origin
branch.master.merge=refs/heads/master
$ git config --global --list
user.name=XXX
user.email=XXX@XXX
color.ui=false
difftool.prompt=false
mergetool.prompt=false
$ git config --system --list
'/etc/gitconfig': No such file or directory

내가 놓친 곳이 있습니까? 내 컴퓨터에 뭔가 빠졌기 때문에 알 수없는 도구가 대체 도구일까요? 도움을 주시면 감사하겠습니다. 감사.



답변

기본적으로 Git은 diff 출력 (일반적으로 한 화면 이상일 수있는 모든 출력)을 한 번에 한 화면의 출력 만 인쇄하는 유틸리티 인 시스템의 호출기로 보냅니다 . 명령을 실행할 때 호출기를 비활성화하려면 --no-pagerGit에 전달하십시오.

$ git --no-pager <subcommand> <options>

이것은 모든 Git 명령에 대해 실행할 수 있습니다.

diff에 대해서만 기본적으로 비활성화 하려면 다음 cat을 실행 하여 diff 호출기를 로 설정할 수 있습니다 .

$ git config pager.diff false

모든 명령에 대해 기본적으로 비활성화 하려면 다음 cat을 실행 하여 Git 호출기를 로 설정할 수 있습니다 .

$ git config --global core.pager cat


답변

다음 core.pager값은 lessstdout으로 인쇄하고 페이저 기능 (필요한 경우)을 사용하여 위아래로 스크롤 할 수 있도록합니다 (와 달리 cat) :

$ git config --global core.pager "less -FRSX"

diff가 첫 화면 ( -F) 에 맞으면 즉시 종료되고 원시 제어 문자 ( -R)를 출력하고 줄 바꿈 ( -S)이 아닌 긴 줄을 자르고 termcap init / deinit 문자열 ( -X)을 사용하지 않습니다 .


답변

색상이 마음에 들지 않으면 cat모든 git명령에 간단히 사용할 수도 있습니다 .

그래서 git diff | cat당신의 경우.

편집 :
색상 사용에 관심이 있다면 주석에서 지적한대로 :

git diff --color | cat


답변