ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [git] 변경점 비교하기 (git diff)
    git 2023. 4. 21. 12:04

    ▶[git] 변경점 비교하기 (git diff)


    ▶설명


    git에서 커밋(commit)을 진행하기 전에 반드시 파일의 변경 사항을 확인하고 진행하는걸 추천합니다.

    오늘은 변경점을 비교할 수 있는 명령어를 간단히 알아보겠습니다.

     

    극히 일부만 다루는 점 알아주세요.

     

    ▶사용법


    아래의 내용은 git 에서 제공한 사용법입니다. 이 중에 자주 사용하는 몇 가지만 알아보겠습니다.

    usage: git diff [<options>] [<commit>] [--] [<path>...]
       or: git diff [<options>] --cached [--merge-base] [<commit>] [--] [<path>...]
       or: git diff [<options>] [--merge-base] <commit> [<commit>...] <commit> [--] [<path>...]
       or: git diff [<options>] <commit>...<commit> [--] [<path>...]
       or: git diff [<options>] <blob> <blob>
       or: git diff [<options>] --no-index [--] <path> <path>
    
    common diff options:
      -z            output diff-raw with lines terminated with NUL.
      -p            output patch format.
      -u            synonym for -p.
      --patch-with-raw
                    output both a patch and the diff-raw format.
      --stat        show diffstat instead of patch.
      --numstat     show numeric diffstat instead of patch.
      --patch-with-stat
                    output a patch and prepend its diffstat.
      --name-only   show only names of changed files.
      --name-status show names and status of changed files.
      --full-index  show full object name on index lines.
      --abbrev=<n>  abbreviate object names in diff-tree header and diff-raw.
      -R            swap input file pairs.
      -B            detect complete rewrites.
      -M            detect renames.
      -C            detect copies.
      --find-copies-harder
                    try unchanged files as candidate for copy detection.
      -l<n>         limit rename attempts up to <n> paths.
      -O<file>      reorder diffs according to the <file>.
      -S<string>    find filepair whose only one side contains the string.
      --pickaxe-all
                    show all files diff when -S is used and hit is found.
      -a  --text    treat all files as text.

     

    아래의 이미지는 해당 글에서 다루는 내용의 요약입니다.

     

    ▶작업 폴더와 스테이지 영역 비교


    현재 작업 폴더(Working Directory)와 스테이지 영역(Staging Area) 모든 파일을 비교합니다.

     

    모든 파일 비교

    git diff

     

    특정 파일 비교

    git diff [filename]

     

    예시

    예시는 파일을 수정한 것을 전제로 작성하였습니다.

     

    1. git 상태를 확인합니다.

    git status

    • ①수정된 파일
    • ②새로 추가되어 추적되지 않는 파일

     

    2. git diff 명령어로 전체 변경점을 비교해보도록 하겠습니다.

    git diff

    • ①첫 번째 파일 변경점
    • ②두 번째 파일 변경점
    • 새로 추가되어 추적되지 않는 파일은 비교점이 없는 것을 알 수 있습니다.

     

    3. 특정 파일의 변경점만 비교해보겠습니다.

    git diff [filename]

     

    4. 모든 파일을 스테이지 영역에 추가해보겠습니다.

    git add .

     

    5. 다시 전체 파일 변경점을 비교해보겠습니다.

    git diff

    • 모든 파일이 스테이지 영역에 추가되었으므로 변경점이 없는 것을 알 수 있습니다.

     

    6. 스테이지에 추가된 파일 중 하나를 수정해보겠습니다. 상태를 보면 아래와 같습니다.

    git status

     

    7. git diff 명령어로 전체 변경점을 비교해보도록 하겠습니다.

    git diff

     

    위와 같이 스테이지 영역에 올라간 파일과 어떻게 다른지 비교할 수 있습니다.

     

     

    ▶스테이지 영역과 저장소 HEAD 비교


    명령어.

    git diff --staged

    --staged 옵션을 사용하면 스테이지 영역과 저장소 HEAD를 비교합니다.

     

    예시

    이 예시는 이전 예시에서 이어집니다.

     

    1. git 상태를 확인합니다.

    git status

     

    2. 스테이지 추가되어 있는 파일과 저장소를 비교합니다.

    git diff --staged

     

    3. 현재 작업 폴더와 스테이지를 비교한 아래와 같습니다.

    git diff

     

    작업 영역에서 test가 test2로 수정되었습니다.

     

    ▶작업 사항과 HEAD 비교


    명령어

    git diff HEAD

    명령어 HEAD를 추가하면 스테이지와 작업 폴더를 포함하여 HEAD 커밋과 비교합니다.

     

    예시

    이 예시는 이전 예시에서 이어집니다. 파일 수정 상황은 이전과 동일합니다.

     

     

    1. git 상태를 확인합니다.

    git status

     

    2. git diff HEAD 명령어를 사용합니다.

    git diff HEAD

     

    • 스테이지 : test
    • 작업 영역 : test2

    스테이지와 작업 폴더를 포함하여 HEAD 커밋과 비교하였기 때문에 작업 영역의 test2로 표시되는 것을 확인할 수 있습니다.

     

    ▶파일 변경 줄 수 확인 옵션


    명령어

    git diff --stat

    --stat 을 추가하면 어떤 파일이 몇줄 변경되었는지 개수를 표현해줍니다.

     

    예시

    이 예시는 이전 예시에서 이어집니다. 파일 수정 상황은 이전과 동일합니다.

     

     

    1. git 상태를 확인합니다.

    git status

     

    2. 작업 영역과 스테이지 비교

    git diff --stat

     

    3. 스테이지와 저장소 HEAD 비교

    git diff --staged --stat

     

    4. 작업 사항과 HEAD 비교.

    git diff HEAD --stat

     

    ▶마치며


    이외에도 브랜치끼리 비교, 커밋끼리 비교 등이 가능합니다.

     

    git 을 사용할 때 정말 자주 사용하는 명령어입니다.

     

    도움이 되었으면 좋겠습니다.

    댓글

Designed by Tistory.