개발을 시작하면 누구나 처음 마주치는 것이 바로 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
충돌 발생 시 해결 절차
- 충돌 파일 확인: git status로 충돌 파일 목록 확인
- 파일 편집: 충돌 마커(<<<<<<<, =======, >>>>>>>)가 있는 부분을 직접 수정
- 스테이징: git add 파일명으로 해결된 파일 추가
- 커밋: 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을 활용하는 표준적인 협업 흐름입니다.
- 최신 코드 동기화: git pull origin main
- 기능 브랜치 생성: git switch -c feature/새기능
- 작업 후 커밋: git add . → git commit -m "feat: 새 기능 구현"
- 원격에 푸시: git push origin feature/새기능
- PR 생성: GitHub에서 Pull Request 작성 및 코드 리뷰 요청
- 리뷰 반영: 피드백 수정 후 추가 커밋 및 푸시
- 병합: 승인 후 main 브랜치에 Merge
- 브랜치 정리: 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은 처음에는 낯설지만, 반복해서 쓰다 보면 자연스럽게 손에 익습니다. 아래 순서로 학습하면 효율적입니다.
- 기초 다지기: init, add, commit, status, log
- 브랜치 익히기: branch, switch, merge
- 원격 연동 연습: remote, push, pull, fetch
- 협업 시나리오 실습: PR 기반 워크플로우
- 고급 기능 탐구: rebase, stash, cherry-pick, bisect
이 가이드가 Git을 처음 배우는 분들에게 명확한 길잡이가 되길 바랍니다.
막히는 부분이 생기면 git --help 명령어나 공식 문서(git-scm.com)를 참고하세요.
꾸준히 쓰는 것이 가장 빠른 학습 방법입니다! 🚀
'딸깍 지름길.zip' 카테고리의 다른 글
| 인텔리제이 단축키 완벽 정리 | IntelliJ 환경설정 꿀팁 모음 (Windows/Mac) (0) | 2026.04.17 |
|---|---|
| 노션 단축키 완벽 가이드 2026 — 마크다운 서식부터 슬래시 명령어까지 한 번에 끝내기 (0) | 2026.04.16 |
| 파워포인트 단축키 총정리 | 실무에서 바로 쓰는 PPT 꿀팁 모음 | 이미지 공유 (0) | 2026.04.16 |