dev.syw

git log, git diff, git show로 커밋 이력과 변경 내용을 확인하고 커밋 해시의 의미를 이해한다.

변경 이력 보기

커밋을 쌓았다면 이제 그 역사를 읽을 차례입니다. "언제 무엇이 바뀌었나", "이 커밋에서 정확히 어떤 줄이 달라졌나"를 보는 도구들을 배웁니다.

학습 목표

  • git log로 커밋 이력을 다양한 형태로 본다.
  • git diff로 변경 내용을 비교한다.
  • git show로 특정 커밋의 상세를 본다.
  • 커밋 해시의 의미와 사용법을 안다.

커밋 해시

각 커밋에는 고유한 식별자인 해시(hash) 가 붙습니다. SHA-1 기반의 40자리 16진수 문자열입니다.

a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0

너무 길어서 보통 앞 7자리(a1b2c3d)만으로도 커밋을 가리킬 수 있습니다. 또 HEAD는 "현재 위치한 커밋"을 뜻하며, HEAD~1은 그 하나 앞, HEAD~2는 둘 앞 커밋을 의미합니다.

이력 보기: git log

git log                 # 전체 커밋을 최신순으로

옵션을 붙이면 훨씬 보기 좋습니다.

git log --oneline                 # 한 줄씩 요약
git log --oneline --graph --all   # 브랜치까지 그래프로
git log -5                        # 최근 5개만
git log --author="Hong"           # 특정 작성자
git log --since="2 weeks ago"     # 기간 필터
git log -p                        # 각 커밋의 변경 내용(diff)까지
git log --stat                    # 파일별 변경 줄 수 요약

--oneline 출력 예시:

a1b2c3d 로그인 폼 검증 추가
9f8e7d6 헤더 레이아웃 정리
3c2b1a0 프로젝트 초기 설정

변경 비교: git diff

git diff는 아직 커밋하지 않은 변경을 비교할 때 씁니다.

git diff              # 작업 디렉터리 vs 스테이징 (아직 add 안 한 변경)
git diff --staged     # 스테이징 vs 마지막 커밋 (add 했지만 commit 안 한 변경)
git diff HEAD         # 작업 디렉터리 vs 마지막 커밋 (모든 변경)

두 커밋이나 브랜치를 비교할 수도 있습니다.

git diff a1b2c3d 9f8e7d6     # 두 커밋 사이의 차이
git diff main feature/login  # 두 브랜치 사이의 차이

출력에서 -로 시작하는 줄은 삭제, +로 시작하는 줄은 추가된 부분입니다.

- <h1>제목</h1>
+ <h1>새 제목</h1>

특정 커밋 상세: git show

하나의 커밋이 무엇을 바꿨는지 자세히 보려면 git show를 씁니다.

git show              # HEAD(가장 최근 커밋)의 상세
git show a1b2c3d      # 특정 커밋의 메시지 + 변경 내용
git show a1b2c3d:index.html   # 그 커밋 시점의 특정 파일 내용 전체

git show는 커밋 메시지, 작성자, 날짜, 그리고 변경된 코드(diff)를 한 번에 보여 줍니다.

정리: 무엇을 언제 쓰나

보고 싶은 것명령
커밋들의 목록·역사git log --oneline
아직 커밋 안 한 내 변경git diff / git diff --staged
특정 커밋이 바꾼 내용git show <hash>
두 시점 사이의 차이git diff <A> <B>

요약

git log로 역사를 훑고, git diff로 미커밋 변경을 비교하며, git show로 특정 커밋의 상세를 확인합니다. 커밋 해시(또는 HEAD~n)로 원하는 시점을 정확히 가리킬 수 있습니다. 다음 강좌에서는 이력을 여러 갈래로 나누는 브랜치를 배웁니다.

함께 보면 좋은 자료

📚 레퍼런스

댓글 0

Git & GitHub강좌에 대한 댓글입니다.

댓글을 작성하려면 로그인이 필요합니다.