나만의공간

Git 5회차. Git 로그와 상태 확인 - git status, git log, git diff #5 본문

IT/Git

Git 5회차. Git 로그와 상태 확인 - git status, git log, git diff #5

밥알이 2025. 7. 10. 07:34

📜 Git 5회차. Git 로그와 상태 확인 - git status, git log, git diff 완전 정복

Git에서 가장 자주 사용하는 명령어는 단연 로그와 상태 확인입니다. 이 글에서는 git status, git log, git diff의 실제 활용법과 HEAD, 커밋 해시까지 깊이 있게 알려드릴게요 😊


🔍 Git의 핵심은 ‘변화의 기록’

이전 회차에서 Git은 파일을 Working Directory → Staging → Local Repository로 관리한다고 배웠어요. 하지만 이렇게 파일을 저장만 해두면 무슨 의미가 있을까요?

중요한 건 ‘어떤 변경이 있었는가’를 분석하고 추적할 수 있어야 한다는 것!

이를 위해 Git은 매우 강력한 조회 기능을 제공해요. 오늘은 그 중 핵심이 되는 세 가지 명령어를 집중적으로 배워봅시다:

  • ✔️ git status
  • ✔️ git log
  • ✔️ git diff

📌 git status - 현재 상태 확인의 시작

git status는 Git이 현재 추적하고 있는 파일들의 상태를 보여주는 명령어입니다.

✔️ 기본 명령

$ git status

📋 출력 예시

On branch main
Your branch is up to date with 'origin/main'.

Changes not staged for commit:
  (use "git add ..." to update what will be committed)
        modified:   index.html

Untracked files:
  (use "git add ..." to include in what will be committed)
        new_script.js

🧾 주요 용어 정리

  • ✔️ Untracked: Git이 추적하지 않는 새 파일
  • ✔️ Modified: 기존에 있던 파일이 수정됨
  • ✔️ Staged: git add로 스테이징 된 상태

작업 전마다 습관처럼 git status를 입력하면 실수 확률을 확 줄일 수 있어요 😊


📚 git log - 커밋 히스토리 탐험

git log는 Git에서 만든 모든 커밋의 기록을 시간 순으로 보여줍니다. 이전 회차에서 우리가 열심히 커밋했던 기록들이 바로 여기에 다 저장되어 있어요!

✔️ 기본 명령

$ git log

📋 출력 예시

commit 7c2e3b77213c562f52a24d88e8dfd20a4eaccc32 (HEAD -> main)
Author: Lucas <lucas@example.com>
Date:   Tue Jul 9 10:12:45 2025 +0900

    feat: 로그인 폼 디자인 개선

commit 1fc087a6cbebf26a3efcd3b76a728d53f41c5730
Author: Lucas <lucas@example.com>
Date:   Mon Jul 8 21:17:02 2025 +0900

    fix: 로그인 실패 메시지 출력 오류 수정

🔑 구성 요소 설명

  • ✔️ commit: 커밋 해시값 (SHA-1)
  • ✔️ Author: 커밋한 사람
  • ✔️ Date: 커밋 시간
  • ✔️ 메시지: 우리가 직접 작성한 커밋 설명

💡 옵션 꿀팁

  • git log --oneline : 한 줄 요약 출력
  • git log --graph : 브랜치 흐름을 트리로 시각화
  • git log --since="1 week ago" : 최근 일주일 로그만 출력

이렇게 로그를 활용하면 과거의 내 작업 이력 추적은 물론, 협업 중인 팀원의 커밋 이력 확인도 간편해집니다 😊


🔄 git diff - 변경 내용 비교

git diff는 커밋 전후 또는 특정 브랜치/파일 간의 실제 변경된 코드 내용을 비교할 수 있게 해줍니다.

✔️ 기본 명령

$ git diff

현재 워킹 디렉토리와 스테이징 영역 사이의 차이를 보여줍니다.

✔️ 스테이징 영역과 마지막 커밋 사이 차이 보기

$ git diff --cached

✔️ 특정 파일만 비교

$ git diff index.html

🧾 출력 예시

diff --git a/index.html b/index.html
index 6bc4b75..37e7f4c 100644
--- a/index.html
+++ b/index.html
@@ -5,6 +5,7 @@
 <h1>Welcome</h1>
+<p>New line added</p>

이처럼 +는 추가된 코드, -는 삭제된 코드를 의미합니다. 코드 리뷰 시에도 자주 활용되는 필수 명령어예요 👀


🎯 HEAD란 무엇일까?

HEAD는 현재 작업 중인 커밋을 가리키는 포인터입니다.

  • ✔️ HEAD → main : 현재 main 브랜치의 가장 마지막 커밋을 가리킴
  • ✔️ HEAD~1 : 이전 커밋
  • ✔️ HEAD~2 : 두 단계 전 커밋

이 구조는 나중에 reset, checkout, revert 등을 사용할 때 매우 중요하게 작용해요!

🔎 HEAD 상태 확인

$ cat .git/HEAD
ref: refs/heads/main

이렇게 보면 HEAD가 어디를 가리키고 있는지 직접 확인할 수도 있답니다 🔍


🔐 커밋 해시란?

Git은 각 커밋을 고유한 SHA-1 해시값으로 식별합니다.

  • ✔️ 해시값은 40자리의 헥사 코드
  • ✔️ 커밋 메시지, 파일 상태, 작성자, 날짜 등을 바탕으로 자동 생성

예시

commit 1fc087a6cbebf26a3efcd3b76a728d53f41c5730

해시값은 Git 내부에서 ‘주소’처럼 사용됩니다. 특정 커밋으로 이동하거나 비교할 때 필수적으로 사용돼요.

💡 활용 팁

  • ✔️ git show [해시] : 해당 커밋의 상세 정보 보기
  • ✔️ git checkout [해시] : 해당 커밋 시점으로 이동
  • ✔️ git revert [해시] : 해당 커밋을 되돌리는 새 커밋 생성

📌 오늘 배운 내용 요약

  • ✔️ git status: 현재 작업 상태를 확인하는 기본 명령어
  • ✔️ git log: 커밋 히스토리를 시간순으로 조회
  • ✔️ git diff: 변경된 코드 라인을 비교
  • ✔️ HEAD: 현재 내가 작업 중인 커밋을 가리키는 포인터
  • ✔️ 커밋 해시: Git이 커밋을 고유하게 식별하는 ID

이제 Git의 '기록' 능력을 본격적으로 활용할 준비가 되셨습니다! 😊 다음 회차에선 이력을 되돌리거나 복구하는 강력한 기능들을 배워볼게요.


📎 다음 회차 예고

6회차. GitHub와 원격 저장소 연동하기

✔️ git remote 설정 ✔️ git push, pull로 협업 시작 ✔️ GitHub에 첫 업로드 실습!


#Git #gitstatus #gitlog #gitdiff #HEAD #커밋해시 #Git입문 #Git5회차 #Git기초

Comments