본문 바로가기
프로그래밍/Git

깃(Git)을 쓰면서 헷갈리는 개념 TOP 5

by 신나요 2025. 6. 14.

깃을 쓰다 보면 비슷한 듯 다른 명령어들 때문에 헷갈릴 때가 많습니다. 제 스스로 가장 많이 헷갈리는 개념 TOP 5를 골라 보았습니다.


📌 1. Fetch(페치) vs Pull(풀)

개념 정리:

  • Fetch: 원격(remote) 저장소에서 변경 내용을 로컬에 가져오기만 하고 적용하지는 않음.
  • Pull: 원격 저장소의 변경 내용을 로컬에 가져와 즉시 병합하여 바로 적용함.
# Fetch 예시 
git fetch origin main 

# Pull 예시 
git pull origin main

🌱 쉬운 이해

  • Fetch는 온라인 쇼핑몰에서 상품만 장바구니에 넣어둔 상태입니다.
  • Pull은 상품을 실제로 결제해서 집으로 배송받아 바로 쓰는 상태입니다.

주로 협업할 때 타인의 작업 내용을 확인만 하고 싶다면 fetch, 즉시 반영하려면 pull을 사용합니다.


📌 2. Merge(머지) vs Rebase(리베이스)

개념 정리:

  • Merge: 두 브랜치를 병합할 때 새로운 병합(commit)이 추가됩니다.
  • Rebase: 현재 브랜치를 다른 브랜치 위에 올려서 이력을 깔끔히 정리합니다.
# Merge 예시 (main에 feature 병합) 
git checkout main 
git merge feature 

# Rebase 예시 (main 위에 feature를 올림) 
git checkout feature 
git rebase main

 

🌱 쉬운 이해

  • Merge는 서로 다른 길(Branch)이 만나는 지점에서 교차로를 만드는 방식입니다. (이력이 복잡해질 수 있음)
  • Rebase는 길을 교차로 없이 한 줄로 정리하여 깔끔하게 만듭니다. (단, 이력이 재구성되므로 주의!)

일반적으로 협업 브랜치는 merge를, 개인 작업 브랜치는 rebase를 활용하면 좋습니다.


📌 3. HEAD의 개념 (현재 커밋 확인 및 이동)

개념 정리:

  • HEAD: 깃이 현재 바라보고 있는 브랜치나 커밋의 위치를 나타냅니다.
# 현재 HEAD가 가리키는 위치 확인 
git log -1 HEAD 

# 다른 브랜치로 HEAD 이동 (체크아웃) 
git checkout main 

# 특정 커밋으로 HEAD 이동 (분리된 HEAD) 
git checkout 커밋해시값

 

🌱 쉬운 이해

  • HEAD는 깃이 현재 어느 지점(브랜치 또는 커밋)을 가리키고 있는지를 표시하는 깃의 "눈"입니다.
  • 브랜치를 전환하거나 체크아웃(checkout)을 하면 HEAD도 자동으로 이동합니다.

HEAD 이동 시 브랜치가 아닌 특정 커밋에 직접 이동하면 Detached HEAD 상태가 되니 주의하세요!


📌 4. Stash(스태시) 활용법

개념 정리:

  • Stash: 작업 중 변경 내용을 임시로 저장해놓고, 작업 공간을 깨끗하게 만드는 명령어입니다.
# 현재 작업 상태를 임시 저장 
git stash 

# 저장한 스태시 리스트 확인 
git stash list 

# 저장한 최신 스태시를 작업공간으로 불러오기 (pop하면 리스트에서 제거됨) 
git stash pop 

# 불러오면서 리스트에서 제거하지 않으려면 
git stash apply

 

🌱 쉬운 이해

  • 급히 다른 작업을 해야 할 때 내 책상을 치우지 않고 잠시 옆으로 밀어놓는 느낌입니다.
  • git stash로 임시 저장하고, 작업 후 git stash pop으로 다시 불러와 이어서 작업할 수 있습니다.

갑자기 급한 작업을 해야 하거나 임시로 작업 공간을 정리해야 할 때 유용합니다.


📌 5. Reset(리셋) vs Revert(리버트)

개념 정리:

  • Reset: 과거의 특정 커밋 이후 이력을 완전히 삭제하고 과거 상태로 되돌립니다.
  • Revert: 특정 커밋의 변경 내용을 취소하는 새로운 커밋을 만듭니다.
# Reset 예시 (특정 커밋 이후 이력을 삭제, 강력한 방식!) 
git reset --hard 커밋해시값 

# Revert 예시 (특정 커밋의 변경사항만 무효화하는 새 커밋 생성) 
git revert 커밋해시값

 

🌱 쉬운 이해

  • Reset은 시간을 완전히 돌려 그 이후의 사건을 지워버리는 타임머신 방식입니다. 과거 기록이 삭제됩니다.
  • Revert는 과거의 사건을 공식적으로 무효화하는 새로운 이벤트를 추가하는 방식입니다. 이력은 남습니다.

Reset은 로컬 작업에서만 추천하고, 협업 중이라면 Revert로 이력을 보존하는 게 안전합니다!


🚩 간단 정리 

Fetch 원격 저장소에서 변경 사항만 확인 git fetch origin main
Pull 원격 변경 사항을 즉시 반영 git pull origin main
Merge 두 브랜치를 병합 (병합 커밋 생성) git merge feature
Rebase 브랜치를 다른 브랜치 위로 이동하여 정리 git rebase main
HEAD 현재 위치 확인 및 이동 git checkout main
Stash 임시 저장 후 작업 공간 정리 git stash, git stash pop
Reset 과거로 돌아가기 (이력 삭제) git reset --hard 커밋해시
Revert 커밋을 취소하는 새로운 커밋 추가 git revert 커밋해시
 

깃 명령어는 익숙해질수록 자연스럽게 이해됩니다. 자주 사용하고 연습해 보면서 자신만의 활용 방법을 찾아보세요! 

댓글