programing tip

git show 줄을 추가하고 줄을 변경하고 줄을 제거하는 방법이 있습니까?

itbloger 2020. 9. 25. 07:37
반응형

git show 줄을 추가하고 줄을 변경하고 줄을 제거하는 방법이 있습니까?


"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 형식으로 행을 추가하고 삭제 한 "통합"diff를 사용합니다. 정보 추가, 삭제 및 변경을 보여주는 diff를 얻으려면 외부 작업을 수행해야합니다.

https://wiki.postgresql.org/wiki/Working_with_Git#Context_diffs_with_Git 는 일반적인 이전 "diff"를 실행할 수있는 스크립트에 대한 링크를 제공하며, 여기서 "context"diff 출력을 생성 할 수 있습니다 . 컨텍스트 차이는 추가, 제거 및 변경된 행을 표시하므로 원하는 데이터를 얻을 수 있습니다.


모든 파일이 커밋을 위해 준비된 경우 --numstat다음과 같이 이동합니다.

git diff --numstat HEAD~

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

반응형