'git diff'가 변경된 파일 이름과 줄 번호 만 표시하도록 할 수 있습니까?
기본적으로 변경된 내용, 파일 이름 및 줄 번호를보고 싶지 않습니다.
참고 : 변경된 파일 의 이름 을 찾고있는 경우 (변경 된 줄 의 줄 번호 없이 ) 쉽게 할 수 있습니다 . 여기에서 다른 답변 링크를 클릭하십시오 .
아무 이것에 대한 옵션을 내장하지 (그리고 나는 모든 중 유용한 것을 생각하지 않습니다)하지만 입니다 "외부 DIFF"스크립트의 도움으로, 자식에서이 작업을 수행 할 수.
여기 꽤 엉뚱한 것이 있습니다. 출력을 원하는 방식으로 수정하는 것은 사용자의 책임입니다.
#! /bin/sh
#
# run this with:
# GIT_EXTERNAL_DIFF=<name of script> git diff ...
#
case $# in
1) "unmerged file $@, can't show you line numbers"; exit 1;;
7) ;;
*) echo "I don't know what to do, help!"; exit 1;;
esac
path=$1
old_file=$2
old_hex=$3
old_mode=$4
new_file=$5
new_hex=$6
new_mode=$7
printf '%s: ' $path
diff $old_file $new_file | grep -v '^[<>-]'
"외부 diff"에 대한 자세한 내용 GIT_EXTERNAL_DIFF
은 git 매뉴얼 페이지 의 설명을 참조하십시오 .
너무 쉽게:
git diff --name-only
가서 diff!
변경된 줄 수 또는 변경 사항을 포함하는 실제 줄 번호와 같은 줄 번호? 변경된 줄 수를 원하면을 사용하십시오 git diff --stat
. 이것은 다음과 같은 디스플레이를 제공합니다.
[me@somehost:~/newsite:master]> git diff --stat
whatever/views/gallery.py | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
변경 사항 자체의 줄 번호를 가져 오는 옵션은 없습니다.
git diff master --compact-summary
출력은 다음과 같습니다
src/app/components/common/sidebar/toolbar/toolbar.component.html | 2 +-
src/app/components/common/sidebar/toolbar/toolbar.component.scss | 2 --
이것이 바로 당신이 필요로하는 것입니다. 커밋을 만들거나 원격에서 새 커밋을 가져올 때와 같은 형식입니다.
추신 : 아무도이 방법으로 대답하지 않은 것으로 유선.
나는 이것이 오래된 질문이라는 것을 알고 있지만 Windows에서는 파일에 대한 git 출력과 변경된 줄 번호를 필터링합니다.
(git diff -p --stat) | findstr "@@ --git"
diff --git a/dir1/dir2/file.cpp b/dir1/dir2/file.cpp
@@ -47,6 +47,7 @@ <some function name>
@@ -97,7 +98,7 @@ <another functon name>
파일과 변경된 줄을 추출하는 것이 약간 더 많은 작업입니다.
for /f "tokens=3,4* delims=-+ " %f in ('^(git diff -p --stat .^) ^| findstr ^"@@ --git^"') do @echo %f
a/dir1/dir2/file.cpp
47,7
98,7
지금과 지정된 커밋 사이에서 각 파일에서 변경된 파일 이름과 행 수 / 숫자를 표시합니다.
git diff --stat <commit-hash>
1) 내가 좋아하는 것 :
git diff --name-status
파일 상태 앞에 붙습니다. 예 :
A new_file.txt
M modified_file.txt
D deleted_file.txt
2) 통계를 원하면 다음을 수행하십시오.
git diff --stat
다음과 같은 내용이 표시됩니다.
new_file.txt | 50 +
modified_file.txt | 100 +-
deleted_file | 40 -
3) 마지막으로 파일 이름 만 정말로 원한다면 :
git diff --name-only
단순히 보여줄 것이다 :
new_file.txt
modified_file.txt
deleted_file
가장 깨끗한 출력, 즉 파일 이름 / 경로 만
git diff-tree --no-commit-id --name-only -r
HTH
에 git version 2.17.1
, 내장 플래그하지가 이 목적을 달성하기 위해.
통합 diff에서 파일 이름과 줄 번호를 필터링하는 명령 예는 다음과 같습니다.
git diff --unified=0 | grep -Po '^diff --cc \K.*|^@@@( -[0-9]+,[0-9]+){2} \+\K[0-9]+(?=(,[0-9]+)? @@@)' | paste -s -d':'
예를 들어, 통합 된 차이점은 다음과 같습니다.
$ git diff --unified=0
diff --cc foobar
index b436f31,df63c58..0000000
--- a/foobar
+++ b/foobar
@@@ -1,2 -1,2 +1,6 @@@ Line abov
++<<<<<<< HEAD
+bar
++=======
+ foo
++>>>>>>> Commit message
결과는 다음과 같습니다.
❯ git diff --unified=0 | grep -Po '^diff --cc \K.*|^@@@( -[0-9]+,[0-9]+){2} \+\K[0-9]+(?=(,[0-9]+)? @@@)' | paste -s -d':'
foobar:1
공통 grep 일치 결과에서 명령 출력을 일치 시키려면 다음을 수행하십시오.
$ git diff --unified=0 | grep -Po '^diff --cc \K.*|^@@@( -[0-9]+,[0-9]+){2} \+\K[0-9]+(?=(,[0-9]+)? )| @@@.*' | sed -e '0~3{s/ @@@[ ]\?//}' | sed '2~3 s/$/\n1/g' | sed "N;N;N;s/\n/:/g"
foobar:1:1:Line abov
grep -Po '^diff --cc \K.*|^@@@( -[0-9]+,[0-9]+){2} \+\K[0-9]+(?=(,[0-9]+)? )
:diff --cc <filename>
OR 에서 파일 이름 일치 OR 에서 줄 번호@@@ <from-file-range> <from-file-range> <to-file-range>
일치 이후의 나머지 텍스트와 일치@@@
시킵니다.sed -e '0~3{s/ @@@[ ]\?//}'
:@@@[ ]\?
모든 세 번째 줄에서 제거 하여 선택 사항 인 한 줄 컨텍스트를 이전에 얻습니다++<<<<<<< HEAD
.sed '2~3 s/$/\n1/g'
:\n1
열 번호의 두 번째 줄과 세 번째 줄 사이에 세 줄을 모두 추가합니다.sed "N;N;N;s/\n/:/g"
:로 3 줄마다 연결하십시오:
.
'IT story' 카테고리의 다른 글
선택한 라디오 버튼의 값을 얻는 방법? (0) | 2020.04.15 |
---|---|
프로그래밍 방식으로 텍스트 색상을 텍스트보기로 설정하는 방법 (0) | 2020.04.15 |
루프가 반대로 더 빠릅니까? (0) | 2020.04.15 |
가장 널리 사용되는 C ++ 벡터 / 행렬 수학 / 선형 대수 라이브러리는 무엇이고 비용과 이점은 무엇입니까? (0) | 2020.04.15 |
레포 틴이란 무엇이며 어떻게 작동합니까? (0) | 2020.04.15 |