수행시 git diff --stat
일부 파일은 저장소 기반의 전체 경로와 함께 나열되지만 일부 파일은 다음과 같이 나열됩니다.
.../short/path/to/filename.
그것은 경로가로 시작 ...
하고 짧은 경로 만 표시됩니다.
git diff
스크립트로 쉽게 처리 할 수 있도록 모든 파일의 전체 파일 경로를 나열하고 싶습니다 . git diff
항상 전체 경로를 표시 할 수있는 방법이 있습니까?
답변
이 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
사용자의 설정을 읽어 와 자동으로 적절한 배관을 호출합니다 .)
답변
스크립트 처리의 경우 다음 중 하나를 사용하는 것이 좋습니다.
# 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
되는 옵션 과 결합 될 때 강력한 스크립트 처리에 더 편리합니다 .
답변
Bash 사용자의 경우 $COLUMNS
변수를 사용하여 사용 가능한 터미널 너비를 자동으로 채울 수 있습니다.
git diff --stat=$COLUMNS
매우 긴 경로 이름은 여전히 잘릴 수 있습니다. 이 경우를 사용하여 +++ / — 부분의 너비를 줄일 수 있습니다. --stat-graph-width
예를 들어 터미널 너비의 1/5로 제한합니다.
git show --stat=$COLUMNS --stat-graph-width=$(($COLUMNS/5))
보다 일반적인 솔루션의 경우의 출력 tput cols
을 사용하여 터미널 너비를 결정할 수 있습니다 .
답변
옵션이있다 --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(-)
답변
내가 찾은 간단한 해결책은 다음과 같습니다. (* nix에서만 작동합니다.
git diff --stat=$COLUMNS --relative | head -n -1 | cut -c 2- | xargs -d '\n' -P4 printf "$(pwd)/%s\n"
이 버전은 둘 다 작동하지만 osx에서는 좋지 않습니다.
git diff --stat=$COLUMNS --relative | sed -e '$ d' | cut -c 2- | xargs -n4 -I{} echo "$(pwd)/{}"
답변
diff –stat의 동작이 git 1.7.10 주변에서 변경된 것을 발견했습니다. 이전에는 파일 경로를 기본적으로 고정 너비로 줄였습니다. 이제 터미널 창에서 허용하는만큼 표시됩니다. 이 문제가 발생하면 1.8.0 이상으로 업그레이드하십시오.