해당글은 공부 목적으로 정리한 개인적인 기록입니다. 정확하지 않은 정보가 포함될 수 있으며, 최신 기술 동향이나 공식 문서와는 차이가 있을 수 있습니다! 처음 구현하시는 분들께 작은 도움이 되었으면 하며, 혹시 틀리 내용이 있다면 댓글로 알려주시면 감사하겠습니다.
Git 히스토리 조회
Git log는 옵션이 매우 다양하고 조합에 따라 출력 결과도 크게 달라진다.
하지만 실제 개발 과정에서 모든 옵션을 외우기 보다는, 주로 사용되는 몇 가지 옵션과 목적별 조합만 잘 알고 있어도 히스토리를 빠르고 효과적으로 분석할 수 있다.
이 문서에서는 실사용에서 자주 사용되고 직관적으로 확인할 수 있는 Git log 옵션들을 다룬다.
여기서 다루지 않은 세부 옵션이나 고급 기능들은 공식 문서를 참고하여 필요할 때 찾아보는 것을 권장한다.
🔗 Git 공식 문서 : https://git-scm.com/docs/git-log
1️⃣ 전체 히스토리를 한눈에 파악하고 싶을 때
🎯 사용 목적
- 브랜치가 어떻게 나뉘고 합쳐졌는지 흐름을 빠르게 이해
- 팀 작업 전체 구조 파악
✅ 핵심 옵션
- -oneline
- -graph
- -decorate
- -all
🧩 추천 조합
1
| gitlog --oneline --graph --decorate --all
|
👉 “프로젝트 전체 타임라인 보기”용 기본 세트
2️⃣ 커밋을 조건으로 필터링해서 보고 싶을 때
🎯 사용 목적
- 특정 사람의 작업만 확인
- 특정 이슈/기능 관련 커밋만 검색
- 최근 작업만 빠르게 확인
✅ 핵심 옵션
📌 개수 제한
→ 최근 5개 커밋만 출력
👤 작성자 기준
🔍 커밋 메시지 검색
📅 기간 기준
1
2
| git log --since="2025-01-01"
git log --until="2025-01-31"
|
🧩 예시
1
| git log --oneline --author="me" --since="1 week ago"
|
👉 “내가 최근에 뭘 했지?” 확인할 때
3️⃣ 실제 코드 변경 내용을 보고 싶을 때
🎯 사용 목적
- 커밋에서 무엇이 바뀌었는지 확인
- 리뷰 / 디버깅 / 원인 추적
✅ 핵심 옵션
🧾 전체 diff 보기
📊 변경 통계 요약
📁 파일 이름 + 상태
🔄 파일 이름 변경 추적
1
| git log --follow src/main.js
|
–follow는 파일 단위 추적 전용 (디렉토리에는 사용 불가)
4️⃣ 브랜치 비교 & 머지 흐름을 정리해서 보고 싶을 때
🎯 사용 목적
- 특정 브랜치에만 있는 커밋 확인
- 머지 커밋 때문에 로그가 복잡할 때 정리
✅ 핵심 옵션
🔀 브랜치 차이 확인
1
| git log origin/main..HEAD
|
→ origin/main에는 없고 현재 브랜치에만 있는 커밋
🚫 머지 커밋 제외
🛣️ 메인 흐름만 보기
💡 -first-parent가 중요한 이유
- 머지된 토픽 브랜치 내부 커밋은 숨기고
- “언제 무엇이 main에 들어왔는지” 만 보여줌
5️⃣ 특정 코드 라인 / 함수의 변경 이력을 추적하고 싶을 때
🎯 사용 목적
- “이 코드 누가 언제 왜 바꿨지?”
- 버그가 들어온 시점 추적
✅ L 옵션 (고급)
📌 라인 범위 추적
1
| git log -L 10,30:src/app.js
|
📌 함수 단위 추적
1
| git log -L :myFunction:src/app.js
|
🔎 특징
- 해당 라인/함수의 변경 히스토리만 추출
- 자동으로 p(diff) 포함됨
6️⃣ git log 별칭(alias) 설정하기
🎯 사용 목적
- 매번 긴 옵션 치기 귀찮을 때
- 팀 공용 명령어 만들기
✅ 설정 방법
1
| git config --global alias.lg "log --oneline --graph --decorate --all"
|
📌 사용 예
💡 추천 alias 예시
1
2
3
| git config --global alias.last "log -1 -p"
git config --global alias.me "log --author=\"$(git config user.name)\""
git config --global alias.mainline "log --first-parent --oneline"
|
📎 요약: 목적별 추천 명령어