(Git 명령어) 7. git diff - 버전 비교하기

Byeongho Jeon·2025년 2월 13일

Git

목록 보기
8/13
  1. 프로젝트를 진행하면서 최신 커밋(버전)에 비해 현재 작업 디렉터리가 어떻게 변경되었는지 또는 첫 번째 버전에 비해 세 번째 버전은 어떻게 변경되었는지 등을 확인(비교)하고 싶을 때가 있을 수 있다. 이때 git diff 명령어를 사용하면 된다.

  2. git diff 명령어는 최근 커밋과 현재 작업 디렉터리(현재 작업 내역)의 차이를 출력해 준다. 보통 커밋한 이후로 작업 디렉터리에서 무엇을 변경했는지 확인하기 위해 사용한다.

  1. git diff --cached or git diff --staged 명령어는 최근 커밋과 스테이지에 추가된 항목의 차이를 출력해 준다.
  1. git diff <커밋> <커밋> 명령어는 커밋 간 차이를 출력해 준다. <커밋>에는 비교하려는 커밋의 해시를 입력하면 되며, 짧은 커밋 해시를 입력해도 된다.
    여기서 주의해야 할 점이 있는데, 네 번째 커밋은 세 번째 커밋에 비해 문자 D가 추가됐고, 세 번째 커밋은 네 번째 커밋에 비해 문자 D가 없다는 점이다. 즉, 무엇을 기준으로 비교하느냐에 따라 비교의 결과는 달라진다.
    따라서 위의 명령어는 git diff <이 커밋을 기준으로> <이 커밋이 달라진 점> 으로 이해하는 것이 좋다.
    예를 들어, 세 번째 커밋을 기준으로 네 번째 커밋이 달라진 점을 알고 싶다면 git diff <세 번째 커밋> <네 번째 커밋> 을 입력하면 된다. 세 번째 커밋에 비해 네 번째 커밋은 문자 D가 추가됐으므로 +D가 출력된다. 반대로 git diff <네 번째 커밋> <세 번째 커밋> 을 입력하면 -D가 출력된다.
  1. 커밋끼리 비교할 때 좋은 팁이 있다. 커밋을 비교할 때 매번 커밋 해시를 조회하고 붙여넣는 것이 번거롭다면, HEAD를 기준으로 비교해도 된다.
    HEAD^ 또는 HEAD~1 은 현재 브랜치의 최신 커밋에서 하나 이전 커밋을 가리킨다. HEAD^^ 또는 HEAD~2 는 현재 브랜치의 최신 커밋에서 두 개 이전 커밋을 가리킨다. 즉, HEAD 뒤에 붙는 ^ 의 개수 또는 HEAD~ 뒤에 붙는 숫자'HEAD에서 몇 번째 이전을 나타내는지'를 의미한다.
    예를 들어, 지금 상황에서 HEAD는 fourth commit을, HEAD^ 또는 HEAD~1은 third commit을 나타낸다. 따라서 세 번째 커밋을 기준으로 네 번째 커밋을 비교하고 싶다면 git diff HEAD^ HEAD or git diff HEAD~1 HEAD 를 입력하면 된다.
  1. git diff <브랜치> <브랜치> 명령어는 두 브랜치의 차이를 출력해 준다.
    이 명령어도 git diff <기준이 되는 브랜치> <기준과 비교할 브랜치> 로 이해하는 것이 좋다.

git diff <브랜치> <브랜치> 예시 (체크아웃편 5번)

profile
안녕하세요. 개발자 지망생 전병호입니다!

0개의 댓글