programing

깃쇼 라인을 추가하고 라인을 변경하고 라인을 제거하는 방법이 있습니까?

lovejava 2023. 7. 13. 20:13

깃쇼 라인을 추가하고 라인을 변경하고 라인을 제거하는 방법이 있습니까?

git diff --stat그리고.git log --stat다음과 같은 출력 표시:

$ git diff -C --stat HEAD c9af3e6136e8aec1f79368c2a6164e56bf7a7e07
app/controllers/application_controller.rb |   34 +++-------------------------
1 files changed, 4 insertions(+), 30 deletions(-)

그런데 그 커밋에서 실제로 일어난 일은 4줄이 변경되고 26줄이 삭제되었는데, 이는 4줄을 추가하고 30줄을 삭제하는 것과는 다릅니다.

델타 LOC(이 경우 26개)를 얻을 수 있는 방법이 있습니까?추가된 줄과 제거된 줄을 구분하는 것은 별로 신경 쓰지 않습니다.

사용할 수 있는 항목:

git diff --numstat

숫자 차이 정보를 얻을 수 있습니다.

수정을 추가 및 제거 쌍과 분리하는 한,--word-diff도움이 될 겁니다다음과 같은 방법을 사용할 수 있습니다.

MOD_PATTERN='^.+(\[-|\{\+).*$' \
ADD_PATTERN='^\{\+.*\+\}$' \
REM_PATTERN='^\[-.*-\]$' \
git diff --word-diff --unified=0 | sed -nr \
    -e "s/$MOD_PATTERN/modified/p" \
    -e "s/$ADD_PATTERN/added/p" \
    -e "s/$REM_PATTERN/removed/p" \
    | sort | uniq -c

그것은 약간 장황하기 때문에 당신은 그것을 대신 당신만의 스크립트로 구문 분석하는 것이 좋을 것입니다.

  1. ID가 있는 커밋에 의해 추가/변경/삭제된 라인을 알고 싶은 경우commit-id당신은 사용할 수 있습니다.

    git show commit-id --stat
    

    또는

    git diff commit-id-before commit-id --stat
    
  2. 범위 커밋에 의해 추가/변경/삭제된 라인을 알고 싶다면 다음을 사용할 수 있습니다.

    git diff commit-id1 commit-id2 --stat
    
  3. 각 커밋별로 추가/변경/삭제된 라인을 알고 싶다면 다음을 사용할 수 있습니다.

    git log --stat
    

를 사용하여 수정된 선의 수를 표시할 수 있습니다.예:

git diff HEAD c9af3e6136e8 | diffstat -Cm

-C옵션은 컬러화된 출력을 얻기 위한 것입니다.-m옵션은 수정된 줄 수를 표시하기 위한 것입니다.샘플 출력:

 app/controllers/application_controller.rb |   30 -------------------!!!
 1 files changed, 0 insertions(+), 26 deletions(-), 4 modifications(!)

각 범주(삽입, 삭제, 수정)의 줄 수는 다음과 같이 대략적입니다.man diffstat다음과 같이 말합니다.

-m merge insert/delete 카운트를 패치 파일의 각 "슬롯"에서 병합하여 수정된 라인의 카운트를 대략적으로 표시합니다.

diffstat와 비교할 때 누락된 기능이 있습니다.git diff --stat:diffstat파일 이동/이름 변경을 표시할 수 없습니다(예:app/{a.rb => b.rb})와 달리git diff --stat이 정보를 보여줄 수 있는 것은 사용함으로써.-M(--find-renames) 옵션 또는 설정에 의해diff.renamesgit 구성 파일(참조)man git-config).

모든 파일이 커밋을 위해 준비된 경우--numstat다음과 같이 진행:

git diff --numstat --cached

출력 예제

32      32      project.pbxproj

--numstat[...] 추가 및 삭제된 라인 수 표시

git는 diff 형식으로 행을 추가하고 삭제하는 "diff" diff를 사용합니다.추가, 삭제, 변경 정보를 보여주는 디프를 얻으려면 외부적인 것을 해야 합니다.

https://wiki.postgresql.org/wiki/Working_with_Git#Context_diffs_with_Git 은 정기적으로 오래된 "diff"를 실행할 수 있는 스크립트에 대한 링크를 제공하며, 를 통해 "diff" diff 출력을 생성할 수 있습니다.컨텍스트 diff에는 추가, 제거 및 변경된 라인이 표시되므로 원하는 데이터를 얻을 수 있습니다.

언급URL : https://stackoverflow.com/questions/9933325/is-there-a-way-of-having-git-show-lines-added-lines-changed-and-lines-removed