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” 강좌에 대한 댓글입니다.