git diff --stat 전체 파일 경로 표시
을 할때git diff --stat
일부 파일은 저장소 베이스에서 전체 경로로 나열되지만 일부 파일은 다음과 같이 나열됩니다.
.../short/path/to/filename.
그것이 그 길의 시작입니다....
짧은 경로만 표시됩니다.
를 .git diff
스크립트에서 쉽게 처리할 수 있도록 모든 파일의 전체 파일 경로를 나열합니다.제가 할 수 있는 방법이 있을까요?git diff
한 길을 것
git diff
출력을 80열 터미널에 맞게 잘라냅니다.
다음 옵션을 사용하여 값을 지정하여 이를 재정의할 수 있습니다.
--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 --stat=10000
git 저장소의 루트에 상대적인 경로를 생성합니다.
할 수 ) (의 할 의 할 )git diff-tree
직접적으로 말하면 "플럼핑" 명령에 가깝기 때문입니다만, 어느 쪽이든 괜찮으실 거라고 생각합니다.은가가다다aeht과e은도 같은 여분의 텍스트가 필요합니다.--stat
를 할 때git diff-tree
. 를 하는 의 인 인 의 하는 를 git diff
" "앞단",고git diff-tree
배관 명령이란?git diff
과은에된해을다을e된s 등의 옵션에 합니다.diff.renames
이름 변경 탐지 여부를 결정합니다.건,고,은git diff
와한을할다다할felol와을에 해당합니다.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 즉, 를 의 로 1/5 합니다 합니다 의 를 로
git show --stat=$COLUMNS --stat-graph-width=$(($COLUMNS/5))
더 , Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ ΔΔ 의 출력을 사용할 수 있습니다.tput cols
단자 폭을 결정합니다.
선택의 여지가 있습니다.--name-only
:git diff --name-only
은 . 은 에서도 됩니다 과 에서도 됩니다 등의 다른 git 됩니다.show
그리고.stash
.
옵션을 사용하면 경로가 짧아지지 않습니다.
제가 찾은 간단한 해결책은 이렇게 하는 것이었습니다. (*nix에서만 작동합니다, 죄송합니다 osx는 없습니다.)
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)/{}"
git diff
는 자기(사용자 친화적) 명령입니다.하는 배관 명령어해당관을는다이e다roe을yrsu,gg는g해git diff-tree
.
얻을 수 있습니다.git diff-tree
git 저장소와 옵션의 조합을 사용하여 git 저장소에 대한 전체 경로를 출력합니다.
예
"마지막 " "에서 "되었습니다 "가 "에서 " "되었습니다 ")"에서되었습니다.HEAD
현재 분기의 커밋입니다.
git diff-tree --name-only -r --no-commit-id HEAD
에서 의 의 마지막 에 있는 main
를 치다
git diff-tree --name-only -r --no-commit-id main
의 에 마지막 세 main
를 치다
git diff-tree --name-only -r main main~3
경로 아래 의 src/
git diff-tree --name-only -r --no-commit-id main src/
현재 분기의 마지막 커밋에서 변경된 파일의 절대 경로
git diff-tree --name-only -r --no-commit-id --line-prefix=`git rev-parse --show-toplevel`/ HEAD
설명.
git diff-tree
나무 같은 두 물체의 방울을 비교합니다.
은 입니다.treeish
저장소 루트에 있는 개체를 가리킵니다.도treeish
이인면는는s면ss인e이sblobs
.
실행중 입니다.git diff-tree HEAD
입니다의 입니다.HEAD
그리고.HEAD~1
저장소 루트의 블랍 차이를 포함합니다.을 보려면 는된을면로다야e다야oood에yted면는,eltse든d을e된treeish
물건들.이는 다음을 사용하여 달성할 수 있습니다.-r
(반복에서와 같이) 옵션.
이를 통해 하나와 둘이 임의 커밋의 임의 디렉토리를 비교할 수 있습니다.
기본적으로 하나의 커밋 개체만 지정된 경우 상위 개체와 비교됩니다.즉, 달리기git diff-tree HEAD
와입니다에 합니다.git diff-tree HEAD HEAD~1
. 트리쉬 개체로 하나의 커밋만 지정한 경우 부모 커밋 ID가 표시됩니다.사용.--no-commit-id
이것을 없애 버립니다.
git-diff-tree
원하지 않는 많은 정보(ID, 권한, 추가, 삭제, 수정 여부)를 인쇄합니다.우리는 단지 이름을 원하기 때문에 우리는--name-only
.
만약 우리가 절대적인 경로를 원한다면, 우리는 다음과 같은 것을 사용하여 모든 선의 접두사를 붙여야 합니다.git rev-parse --show-toplevel
없이 . . 은 의 를 를 은 의 /
는 그것을 그래서 저희가 추가를.
--line-prefix=`git rev-parse --show-toplevel`/
다음과 같은 깃 별칭을 만들었습니다.
diffstat = ! "gitdiffstat() { git diff --stat=$(tput cols) ${1:-master} ; }; gitdiffstat"
이것은 열 수를 읽어냅니다.tput cols
지휘. 기본값은 다음과 같습니다 같습니다 다음과에 대한 디핑이 기본값입니다.master
분기를 할 수 . , 를 으로 할 할 으로 .
$ git diffstat
.gitalias | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --stat의 동작이 git 1.7.10 부근에서 변경되었는데, 이전에는 파일 경로를 기본적으로 고정 폭으로 단축시켰지만 이제는 터미널 창이 허용하는 만큼 표시됩니다.이 문제가 발생하는 경우 1.8.0 이상으로 업그레이드해야 합니다.
언급URL : https://stackoverflow.com/questions/10459374/making-git-diff-stat-show-full-file-path
'programing' 카테고리의 다른 글
MariaDB: Arch Linux에서 OQGRAPH를 DB Engine으로 설치하는 방법 (0) | 2023.09.12 |
---|---|
제이쿼리 아약스 데이터 포스트에 대한 보안 조언? (0) | 2023.09.12 |
SQL 개발자 문제입니다.java.library.path에 ocijdbc21 없음 (0) | 2023.09.12 |
Android에서 .docx 파일 및 .xlsx 파일을 만드는 방법 (0) | 2023.09.12 |
출력을 PowerShell의 화면과 파일에 표시 (0) | 2023.09.07 |