딸깍 지름길.zip

Git 명령어 완벽 가이드 | 초보자부터 협업까지 한 번에 끝내기

zippy 2026. 4. 17. 12:38
반응형

개발을 시작하면 누구나 처음 마주치는 것이 바로 Git입니다. "커밋이 뭐야?", "브랜치는 왜 쓰는 거야?" 라는 질문에서 시작해서, 팀 협업 중 머지 충돌로 멘붕을 겪기까지, Git은 모든 개발자의 필수 도구입니다. 이 글에서는 Git의 초기 설정부터 실무 협업까지, 꼭 알아야 할 핵심 명령어를 단계별로 완벽하게 정리합니다.

✅ Git이란? 왜 써야 할까?

Git은 분산형 버전 관리 시스템(DVCS, Distributed Version Control System)으로, 코드의 변경 이력을 기록하고 관리할 수 있게 해주는 도구입니다. Git을 사용하면 다음과 같은 이점이 있습니다.

  • 변경 이력 추적: 누가, 언제, 무엇을 바꿨는지 기록됩니다
  • 협업 용이성: 여러 명이 동시에 같은 프로젝트에서 작업할 수 있습니다
  • 실수 복구: 이전 상태로 언제든지 되돌릴 수 있습니다
  • 브랜치 전략: 기능별로 독립적인 작업 공간을 만들 수 있습니다

⚙️ 1단계: Git 초기 설정 (git config)

Git을 처음 설치했다면 가장 먼저 사용자 정보를 설정해야 합니다. 커밋 기록에 작성자 정보가 함께 남기 때문에 반드시 설정해야 하는 과정입니다.

# 사용자 이름 설정
git config --global user.name "홍길동"

# 이메일 설정
git config --global user.email "honggildong@example.com"

# 기본 브랜치명 설정 (main 권장)
git config --global init.defaultBranch main

# 설정 확인
git config --list

💡 Tip: --global 옵션은 현재 사용자의 모든 저장소에 적용됩니다. 특정 프로젝트에만 적용하려면 해당 디렉토리에서 --local 옵션을 사용하세요.

📁 2단계: 저장소 생성과 클론 (git init / git clone)

프로젝트를 시작하는 방법은 두 가지입니다. 새 저장소를 직접 만들거나, 기존 원격 저장소를 복제하는 것입니다.

# 새 로컬 저장소 초기화
git init

# 원격 저장소 복제 (GitHub 등)
git clone https://github.com/username/repository.git

# 특정 폴더명으로 클론
git clone https://github.com/username/repository.git my-folder

git init을 실행하면 현재 디렉토리에 .git 폴더가 생성되며, 이 폴더가 Git 저장소의 핵심 데이터를 모두 담고 있습니다.

📸 3단계: 스테이징과 커밋 (git add / git commit)

Git의 작업 흐름은 크게 세 영역으로 나뉩니다.
작업 디렉토리(Working Directory), 스테이징 영역(Staging Area), 로컬 저장소(Local Repository)입니다.

# 특정 파일을 스테이징 영역에 추가
git add 파일명.txt

# 현재 디렉토리의 모든 변경 파일 추가
git add .

# 커밋 (변경 이력 저장)
git commit -m "feat: 로그인 기능 구현"

# add와 commit을 한 번에 (새 파일 제외)
git commit -am "fix: 버그 수정"

좋은 커밋 메시지 작성 규칙 (Conventional Commits)

  • feat: 새로운 기능 추가
  • fix: 버그 수정
  • docs: 문서 변경
  • style: 코드 포맷 변경 (기능 변경 없음)
  • refactor: 코드 리팩토링
  • test: 테스트 추가/수정
  • chore: 빌드 설정, 패키지 변경 등

🔍 4단계: 상태 확인과 로그 조회 (git status / git log)

현재 저장소 상태를 파악하고 커밋 이력을 확인하는 명령어입니다. 작업 중에 가장 자주 사용하는 명령어 중 하나입니다.

# 현재 작업 상태 확인
git status

# 커밋 이력 조회
git log

# 한 줄 요약으로 보기
git log --oneline

# 브랜치 그래프와 함께 보기
git log --oneline --graph --all

# 특정 파일의 변경 내용 비교
git diff 파일명.txt

# 스테이징된 변경 내용 비교
git diff --staged

🌿 5단계: 브랜치 전략 (git branch / git checkout / git switch)

브랜치(Branch)는 Git의 핵심 기능으로, 독립적인 작업 공간을 생성해 메인 코드를 안전하게 보호하면서 새로운 기능을 개발할 수 있게 해줍니다.

# 브랜치 목록 확인
git branch

# 새 브랜치 생성
git branch feature/login

# 브랜치 이동 (구버전 방식)
git checkout feature/login

# 브랜치 이동 (신버전 권장)
git switch feature/login

# 브랜치 생성 + 이동 동시에
git switch -c feature/login

# 브랜치 삭제
git branch -d feature/login

💡 실무에서 많이 쓰는 브랜치 전략 (Git Flow)

  • main: 항상 배포 가능한 안정 버전
  • develop: 개발 통합 브랜치
  • feature/기능명: 기능 단위 개발 브랜치
  • hotfix/이슈명: 긴급 버그 수정 브랜치

🔀 6단계: 병합과 충돌 해결 (git merge / git rebase)

작업이 완료된 브랜치를 메인 브랜치에 합치는 과정입니다. 충돌(Conflict)이 발생할 수 있으니 차분하게 해결하는 방법을 익혀두는 것이 중요합니다.

# main 브랜치로 이동 후 병합
git switch main
git merge feature/login

# 병합 커밋 없이 직선 이력으로 병합
git merge --squash feature/login

# 리베이스 (커밋 이력을 깔끔하게 정리)
git rebase main

충돌 발생 시 해결 절차

  1. 충돌 파일 확인: git status로 충돌 파일 목록 확인
  2. 파일 편집: 충돌 마커(<<<<<<<, =======, >>>>>>>)가 있는 부분을 직접 수정
  3. 스테이징: git add 파일명으로 해결된 파일 추가
  4. 커밋: git commit으로 병합 완료

☁️ 7단계: 원격 저장소 연동 (git remote / git push / git pull)

로컬 저장소와 GitHub, GitLab 등의 원격 저장소를 연결하고 코드를 동기화하는 핵심 명령어입니다.

# 원격 저장소 연결
git remote add origin https://github.com/username/repo.git

# 연결된 원격 저장소 확인
git remote -v

# 로컬 커밋을 원격에 업로드
git push origin main

# 최초 업로드 시 upstream 설정 (이후엔 git push만 해도 됨)
git push -u origin main

# 원격 변경사항 가져오기 + 병합
git pull origin main

# 원격 변경사항만 가져오기 (병합 안 함)
git fetch origin

💡 pull vs fetch 차이점: git pull은 원격 변경사항을 가져와 자동으로 현재 브랜치에 병합합니다. git fetch는 변경사항을 가져오기만 하고 병합은 수동으로 해야 합니다. 팀 협업에서는 충돌을 줄이기 위해 fetch 후 확인하고 병합하는 방식을 권장합니다.

⏪ 8단계: 되돌리기 명령어 (git restore / git reset / git revert)

실수했을 때 당황하지 않고 이전 상태로 되돌리는 방법입니다. 상황에 따라 적절한 명령어를 선택해야 합니다.

# 작업 디렉토리의 변경사항 취소 (스테이징 전)
git restore 파일명.txt

# 스테이징 취소 (작업 내용은 유지)
git restore --staged 파일명.txt

# 최근 N개 커밋을 취소 (이력 삭제, 주의!)
git reset --hard HEAD~1   # 변경사항도 삭제
git reset --soft HEAD~1   # 변경사항은 스테이징 유지

# 특정 커밋을 되돌리는 새 커밋 생성 (안전한 방법, 협업 시 권장)
git revert 커밋해시

⚠️ 주의: git reset --hard는 커밋 이력과 작업 내용 모두를 삭제합니다. 원격 저장소에 이미 push된 커밋을 reset하면 팀원과 충돌이 발생할 수 있으니, 협업 중에는 git revert를 사용하는 것이 안전합니다.

📦 9단계: 임시 저장 (git stash)

작업 중 갑자기 다른 브랜치로 이동해야 할 때, 커밋하기 애매한 변경사항을 임시로 보관하는 명령어입니다.

# 현재 변경사항 임시 저장
git stash

# stash 목록 확인
git stash list

# 가장 최근 stash 복원 + 목록에서 제거
git stash pop

# 특정 stash 복원
git stash apply stash@{0}

# stash 삭제
git stash drop stash@{0}

🏷️ 10단계: 태그 관리 (git tag)

릴리즈 버전이나 중요한 시점을 표시할 때 사용하는 태그 명령어입니다. GitHub에서 릴리즈 노트와 함께 자동으로 표시됩니다.

# 태그 목록 확인
git tag

# 간단한 태그 생성
git tag v1.0.0

# 주석 태그 생성 (릴리즈에 권장)
git tag -a v1.0.0 -m "첫 번째 정식 릴리즈"

# 원격 저장소에 태그 업로드
git push origin v1.0.0

# 모든 태그 한 번에 업로드
git push origin --tags

🤝 실무 협업 시나리오: Pull Request 흐름

실제 팀 프로젝트에서 Git을 활용하는 표준적인 협업 흐름입니다.

  1. 최신 코드 동기화: git pull origin main
  2. 기능 브랜치 생성: git switch -c feature/새기능
  3. 작업 후 커밋: git add . → git commit -m "feat: 새 기능 구현"
  4. 원격에 푸시: git push origin feature/새기능
  5. PR 생성: GitHub에서 Pull Request 작성 및 코드 리뷰 요청
  6. 리뷰 반영: 피드백 수정 후 추가 커밋 및 푸시
  7. 병합: 승인 후 main 브랜치에 Merge
  8. 브랜치 정리: git branch -d feature/새기능

📋 자주 쓰는 Git 명령어 치트시트

명령어 설명
git init 저장소 초기화
git clone [URL] 원격 저장소 복제
git status 현재 상태 확인
git add . 전체 변경사항 스테이징
git commit -m "메시지" 커밋 생성
git push origin main 원격에 업로드
git pull origin main 원격 변경사항 가져오기 + 병합
git branch 브랜치 목록 확인
git switch -c [브랜치명] 브랜치 생성 + 이동
git merge [브랜치명] 브랜치 병합
git log --oneline 커밋 이력 한 줄 보기
git stash 작업 임시 저장
git revert [해시] 커밋 안전하게 되돌리기
git tag -a v1.0.0 버전 태그 생성

🎯 마무리: Git 학습 로드맵

Git은 처음에는 낯설지만, 반복해서 쓰다 보면 자연스럽게 손에 익습니다. 아래 순서로 학습하면 효율적입니다.

  1. 기초 다지기: init, add, commit, status, log
  2. 브랜치 익히기: branch, switch, merge
  3. 원격 연동 연습: remote, push, pull, fetch
  4. 협업 시나리오 실습: PR 기반 워크플로우
  5. 고급 기능 탐구: rebase, stash, cherry-pick, bisect

이 가이드가 Git을 처음 배우는 분들에게 명확한 길잡이가 되길 바랍니다.
막히는 부분이 생기면 git --help 명령어나 공식 문서(git-scm.com)를 참고하세요.
꾸준히 쓰는 것이 가장 빠른 학습 방법입니다! 🚀

반응형