Git의 가장 핵심적인 기능은 변경 이력을 체계적으로 기록하고 추적할 수 있다는 점입니다.
이번 글에서는 커밋을 기록하고, 히스토리를 조회, 커밋 간 변경 내용을 비교하는 데 사용되는 핵심 명령어인 commit
, log
, show
, diff
의 개념과 사용법을 자세히 살펴보겠습니다.
commit - 변경 이력을 저장소에 기록하기
git commit
은 스테이징 영역에 있는 변경사항을 로컬 저장소에 스냅샷으로 저장하는 명령어입니다.
git commit -m "message"
-m
옵션은 커밋 메시지를 인라인으로 작성하는 방식입니다.
Git에서는 모든 커밋에 의미 있는 메시지를 남기는 것을 권장합니다.
메시지 작성 팁
- 의미있는 단어로 시작 (feat:, fix:, docs:, refactor: 등)
- 작업 목적이 명확하도록 작성 (영어/한글 상관 없이 팀 규칙에 따라 일관성 있게 작성)
다중 라인으로 메시지를 작성하려면 git commit
으로 에디터를 열고, 제목+설명을 구분하여 메시지를 작성할 수 있습니다.
commit --amend - 이전 커밋 수정
git commit --amend
는 가장 최근의 커밋을 수정할 때 사용합니다.
커밋 메시지를 바꾸거나, 누락된 파일을 추가하거나, 잘못 포함된 파일을 제외하는 등의 작업이 가능합니다.
커밋을 덮어쓰기 때문에 커밋 해시가 변경되며, 공유되지 않은 로컬 커밋에서만 사용하는 것이 좋습니다.
#에디터를 열어 커밋 메시지를 수정합니다.
git commit --amend
#기존 커밋 메시지를 그대로 사용합니다.
git add .
git commit --amend --no-edit
→ commit --amend
를 사용하면 기존의 커밋 내역에 현재 스테이징 된 내용을 포함시킨 후 덮어씌우게 됩니다.
이미 원격 저장소에 푸시한 커밋을 수정하면 강제 푸시(git push --force)가 필요하므로, 협업 브랜치에서는 사용에 주의해야 합니다.
log - 커밋 이력 확인
git log
는 지금까지 수행한 커밋의 히스토리를 보여줍니다.
언제, 누가, 어떤 메시지로 커밋했는지 확인할 수 있습니다.
#간결한 로그 출력
git log --oneline
#브랜치 구조와 함께 커밋 이력 한눈에 보기
git log --oneline --graph --decorate --all
옵션 | 설명 |
--graph | 브랜치 및 병합 구조를 시각적으로 표현 |
--decorate | HEAD, 브랜치 명 등을 표시 |
--all | 로컬 저장소의 모든 브랜치 로그 표시 |
-p | 커밋별 diff 보기 |
--stat | 변경 파일 및 변경 라인 요약 |
--author=”이름” | 특정 작성자의 커밋만 표시 |
--since=”2 days ago” | 특정 날짜 이후의 커밋만 표시 |
show - 특정 커밋 상세 보기
git show
는 특정 커밋의 상세 정보를 보여줍니다.
커밋메시지, 변경 파일, diff가지 한 번에 확인 가능합니다.
git show <커밋 해시>
→ 해당 커밋에 포함된 변경 사항과 메타 정보(author, date 등)를 한 번에 확인할 수 있습니다.
최근 커밋을 바로 확인하기 위해 아래와 같이 사용할 수 있습니다.
git show HEAD
#두 단계 이전 커밋
git show HEAD~2
옵션 | 설명 |
--name-only | 어떤 파일이 변경되었는지만 표시 |
--stat | 변경된 파일과 라인 통계 표시 |
--pretty=online | 한 줄 요약 |
--quiet | diff 없이 정보만 출력 |
diff - 변경 내용 비교
git diff는 변경된 파일 내용의 차이(diff)를 보여줍니다. 커밋 전, 혹은 브랜치 간의 차이를 파악할 때 매우 유용합니다.
git diff는 Working Directory와 Staging Area 사이의 차이를 보여주기 때문에, 변경사항이 git add 를 통해 Staging Area로 넘어간 경우 git diff
에서는 아무것도 나타나지 않습니다.
#워킹 디렉터리 vs 스테이징 영역
git diff
#스테이징 영역 vs 최근 커밋
git diff --cached
git diff --staged
#브랜치 간 코드 차이 비교
git diff dev master
#특정 커밋 간 비교
git diff abc1234 dfg5678
#최신 커밋과의 변경사항 확인하기
git diff HEAD
옵션 | 설명 |
--name-only | 변경된 파일 이름만 표시 |
--stat | 변경 파일과 라인 시각적 요약 |
--cached / --staged | 스테이징에 올린 변경 확인 |
Git에서 commit은 단순한 저장이 아니라 하나의 작업 단위를 기록하는 중요한 과정입니다.
이렇게 기록된 커밋들은 log로 확인하고, diff로 비교하고, show로 상세 내용을 살펴보며 지속적으로 관리되고 추적 가능한 이력으로 남습니다.
이 네 가지 명령어를 익히면, Git을 단순한 백업 도구가 아닌 협업과 품질 관리를 위한 강력한 버전 관리 시스템으로 활용할 수 있게 됩니다.
'DevOps > Git' 카테고리의 다른 글
[Git] 브랜치 전략 이해 : branch, checkout, switch, restore, fetch (0) | 2025.04.19 |
---|---|
[Git] 원격 저장소와 동기화 : fetch, pull, push (0) | 2025.04.18 |
[Git] Git 파일 관리 : add, status, rm (0) | 2025.04.16 |
[Git] Git 저장소 생성 및 연결 : init, clone, remote (0) | 2025.04.15 |
[Git] Git 설치 및 초기 설정 : config (0) | 2025.04.14 |