답변:
이 git diff
명령은 다음에 대한 선택적 값을 사용합니다 --stat
.
--stat[=<width>[,<name-width>[,<count>]]]
Generate a diffstat. You can override the default output width for
80-column terminal by --stat=<width>. The width of the filename
part can be controlled by giving another width to it separated by a
comma. By giving a third parameter <count>, you can limit the
output to the first <count> lines, followed by ... if there are
more.
These parameters can also be set individually with
--stat-width=<width>, --stat-name-width=<name-width> and
--stat-count=<count>.
(스크립팅 git diff-tree
의 경우 "plumbing"명령에 더 가깝기 때문에 직접 사용하고 싶을 수 있습니다 . 어느 쪽이든 괜찮을 것 같습니다 . 를 --stat
사용할 때 와 동일한 추가 텍스트가 필요합니다 git diff-tree
. git diff
"도자기 사용의 근본적인 차이점 " "프런트 엔드 및 git diff-tree
배관 명령 은 이름 변경 감지를 수행할지 여부를 결정하는 git diff
것과 같은 옵션에 대해 구성된 설정을 조회하는 것 diff.renames
입니다. 음, 프런트 엔드 git diff
는 git diff-index
커밋을 인덱스와 비교하는 것과 동일한 작업을 수행합니다. 예를 들어. 즉, git diff
사용자의 설정을 읽어 와 자동으로 적절한 배관을 호출합니다 .)
--stat-graph-width=...
스위치를 사용할 수 있습니다 . 또한 높은 설정합니다 --stat-graph-width=
및 것은 --stat-name-width=
충분하지, 당신은 또한 설정해야 --stat-width=
두 가지를 충당하기 위해 충분히 큰합니다.
diff.statGraphWidth
을 설정하는 데 사용할 수 있는 구성 변수가 --stat-graph-width
있지만 나머지는 기본적으로 터미널 너비로 설정됩니다. (그래서, 다른 대답 : "예, 터미널 창을 1000 열 너비로 만드십시오":-))
스크립트 처리의 경우 다음 중 하나를 사용하는 것이 좋습니다.
# list just the file names
git diff --name-only
path/to/modified/file
path/to/renamed/file
# list the names and change statuses:
git diff --name-status
M path/to/modified/file
R100 path/to/existing/file path/to/renamed/file
# list a diffstat-like output (+ed lines, -ed lines, file name):
git diff --numstat
1 0 path/to/modified/file
0 0 path/to/{existing => renamed}/file
이들은 필드 종결 자로 -z
사용 NUL
되는 옵션 과 결합 될 때 강력한 스크립트 처리에 더 편리합니다 .
git rev-parse --show-toplevel
. 원래 문제는 잘린 경로를 참조하는 것이 었는데, 이는 특히 긴 파일 이름 또는 .NET의 낮은 값의 경우 diffstats의 문제입니다 --stat-name-width
. 위의 명령은 경로를 자르지 않지만 요청 된대로 "전체"경로를 표시하지만 저장소 루트에 상대적입니다.
Bash 사용자의 경우 $COLUMNS
변수를 사용하여 사용 가능한 터미널 너비를 자동으로 채울 수 있습니다.
git diff --stat=$COLUMNS
매우 긴 경로 이름은 여전히 잘릴 수 있습니다. 이 경우를 사용하여 +++ / --- 부분의 너비를 줄일 수 있습니다. --stat-graph-width
예를 들어 터미널 너비의 1/5로 제한합니다.
git show --stat=$COLUMNS --stat-graph-width=$(($COLUMNS/5))
보다 일반적인 솔루션의 경우의 출력 tput cols
을 사용하여 터미널 너비를 결정할 수 있습니다 .
--stat=$COLUMNS,$COLUMNS
있습니까? 매번 입력하는 것은 미친 짓입니다.
export COLUMNS
당신에게 ~/.bashrc
, 당신에 ~/.gitconfig
아래 [alias]
추가smart-diff = ! "gitsmartdiff() { git diff $2 --stat=$COLUMNS,$COLUMNS; }; gitsmartdiff"
diff
있습니다. 병합 및 가져 오기 등에서도 작동하기를 원합니다. (수동으로도 할 수 없습니다.) GIT가 지원한다고 생각하지 않습니다.
옵션이있다 --name-only
: git diff --name-only
. 이 옵션은 또한 같은 다른 자식 명령으로 지원 show
하고 stash
.
옵션으로 경로가 단축되지 않습니다.
다음 git 별칭을 만들었습니다.
diffstat = ! "gitdiffstat() { git diff --stat=$(tput cols) ${1:-master} ; }; gitdiffstat"
tput cols
명령 에서 열 수를 읽습니다 . 기본적으로 diffing against master
이지만 선택적으로 다른 분기를 지정할 수 있습니다.
$ git diffstat
.gitalias | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)