Git 완전 정복 가이드 - IDE에서 실전 사용법까지
Git, 처음 접하면 정말 어렵습니다. 터미널에 명령어 치다가 뭔가 꼬이면 식은땀이 나죠. 저도 처음엔 “그냥 폴더에 날짜별로 백업하면 안 되나?”라고 생각했어요. 근데 팀 프로젝트 한 번 해보니까… 버전 관리 없이는 진짜 안 되더라고요.
오늘은 제가 실무에서 매일 쓰는 Git 명령어와 옵션들을 상황별로 정리해봤습니다.
시작 전 기본 설정
Git을 처음 설치했다면 계정 설정부터 해야 합니다.
# 계정 정보 확인
git config --global user.email
git config --global user.name
# 계정 설정
git config --global user.email "your-email@example.com"
git config --global user.name "yourname"
Case 1: 로컬 프로젝트를 GitHub에 처음 올리기
# 1. Git 초기화
git init
# 2. GitHub 저장소 연결
git remote add origin https://github.com/username/repo.git
# 3. 기본 브랜치를 main으로
git branch -M main
# 4. 커밋
git add .
git commit -m "최초 커밋"
# 5. 푸시 (upstream 설정과 함께)
git push -u origin main
-u 옵션으로 upstream 설정하면 다음부턴 git push만 쳐도 됩니다.
Case 2: 기존 저장소 클론 후 작업
# 1. 저장소 복제
git clone https://github.com/username/repo.git
# 2. 작업 브랜치 생성
git checkout -b feature/signup
# 3. 원격 최신 상태 동기화
git fetch origin
git merge origin/main
# 4. 작업 후 푸시
git add .
git commit -m "회원가입 기능 추가"
git push -u origin feature/signup
Case 3: 브랜치 병합
# 1. main으로 이동
git checkout main
# 2. 최신 상태 가져오기
git pull origin main
# 3. 작업 브랜치 병합
git merge feature/login
# 4. 충돌 해결 후 (있다면)
git add .
git commit -m "Merge feature/login"
# 5. 푸시
git push origin main
# 6. 사용한 브랜치 삭제
git branch -d feature/login
git push origin --delete feature/login
git remote 완전 정복
원격 저장소를 관리하는 명령어입니다. 혼자 개발할 땐 잘 모르지만, 팀 프로젝트하면서 저장소 주소 바꿔야 할 때 꼭 필요해요.
기본 명령어
# 연결된 원격 저장소 목록 보기
git remote
# 상세 정보 (fetch/push URL까지)
git remote -v
git remote add - 원격 저장소 연결
새 프로젝트 시작할 때 GitHub 저장소 연결하는 명령어입니다.
# 기본 사용법
git remote add <이름> <URL>
# 예시: origin이라는 이름으로 GitHub 연결
git remote add origin https://github.com/username/repo.git
# 여러 원격 저장소 연결도 가능
git remote add upstream https://github.com/original/repo.git
언제 쓰나요?
git init으로 새 프로젝트 시작 후 GitHub 연결할 때- 오픈소스 fork해서 원본 저장소도 연결할 때 (upstream)
git remote set-url - URL 변경
저장소 주소가 바뀌거나, HTTPS에서 SSH로 바꿀 때 씁니다.
# URL 변경
git remote set-url origin https://github.com/newuser/newrepo.git
# HTTPS → SSH 변경
git remote set-url origin git@github.com:username/repo.git
실무 상황: 회사에서 GitHub Enterprise로 이전하거나, 개인 계정을 회사 계정으로 바꿀 때 자주 써요.
git remote rename - 이름 변경
# origin을 old-origin으로 변경
git remote rename origin old-origin
git remote remove - 연결 해제
# 원격 저장소 연결 삭제
git remote remove origin
# rm으로도 가능
git remote rm upstream
git remote show - 상세 정보 확인
# origin의 모든 정보 보기
git remote show origin
브랜치 추적 상태, fetch/push URL, 로컬-원격 브랜치 매핑까지 다 보여줘서 문제 생겼을 때 디버깅할 때 유용합니다.
git branch 완전 정복
브랜치는 Git의 핵심입니다. 기능 개발, 버그 수정을 독립적으로 할 수 있게 해주죠.
브랜치 확인
# 로컬 브랜치 목록
git branch
# 원격 브랜치까지 전부
git branch -a
# 원격 브랜치만
git branch -r
# 마지막 커밋 정보까지
git branch -v
# 더 자세하게 (upstream 브랜치 정보)
git branch -vv
-vv 옵션은 로컬 브랜치가 어떤 원격 브랜치를 추적하는지 보여줘요. 푸시가 안 될 때 확인하면 좋습니다.
git branch -M - 브랜치 이름 변경 (강제)
# 현재 브랜치 이름을 main으로 변경
git branch -M main
# 특정 브랜치 이름 변경
git branch -M old-name new-name
-m vs -M 차이:
-m: 같은 이름의 브랜치가 있으면 실패-M: 강제로 덮어씀 (주의해서 사용)
실무에서 언제? GitHub가 기본 브랜치를 master에서 main으로 바꾸면서, 기존 프로젝트 마이그레이션할 때 많이 씁니다.
git branch -d / -D - 브랜치 삭제
# 머지된 브랜치 삭제
git branch -d feature/login
# 머지 안 됐어도 강제 삭제
git branch -D feature/broken
-d vs -D:
-d: 안전 삭제 (머지 안 된 브랜치면 에러)-D: 강제 삭제 (작업 날아가도 상관없을 때)
git branch -u - upstream 설정
# 현재 브랜치의 upstream 설정
git branch -u origin/main
# 특정 브랜치의 upstream 설정
git branch -u origin/develop develop
이거 설정해두면 git push, git pull 할 때 브랜치 이름 안 써도 됩니다.
git branch —merged / —no-merged
# main에 머지된 브랜치들
git branch --merged main
# 아직 머지 안 된 브랜치들
git branch --no-merged main
PR 머지하고 나서 정리할 브랜치 찾을 때 유용해요.
git checkout 완전 정복
checkout은 브랜치 이동, 파일 복구 등 여러 역할을 합니다. 최근엔 switch와 restore로 분리됐지만, 아직 checkout이 더 많이 쓰여요.
브랜치 이동
# 기존 브랜치로 이동
git checkout main
# 브랜치 생성하면서 이동
git checkout -b feature/new-login
# 원격 브랜치 기반으로 로컬 브랜치 생성
git checkout -b feature/api origin/feature/api
# 특정 커밋으로 이동 (detached HEAD)
git checkout abc1234
git checkout -b 옵션들
# 기본: 새 브랜치 만들고 이동
git checkout -b new-branch
# 특정 브랜치/커밋 기준으로 생성
git checkout -b hotfix main
git checkout -b test abc1234
# 원격 브랜치 추적하면서 생성
git checkout -b local-branch origin/remote-branch
# 브랜치가 이미 있으면 리셋 (-B)
git checkout -B feature/reset
-b vs -B:
-b: 브랜치가 이미 있으면 에러-B: 브랜치가 있으면 현재 위치로 리셋
파일 복구 (변경 취소)
# 특정 파일 변경 취소
git checkout -- index.html
# 모든 변경 취소
git checkout -- .
# 특정 커밋의 파일 가져오기
git checkout abc1234 -- src/App.js
주의: staging된 파일은 안 됩니다. git restore를 쓰거나 먼저 git reset HEAD로 unstage해야 해요.
git switch / git restore (새로운 방식)
Git 2.23부터 checkout이 하던 일을 두 명령어로 분리했습니다.
# 브랜치 이동 (checkout 대신)
git switch main
git switch -c new-branch # -c = create
# 파일 복구 (checkout -- 대신)
git restore index.html
git restore --staged index.html # unstage
새 프로젝트면 switch/restore 쓰는 게 더 명확합니다.
자주 쓰는 옵션 정리표
| 명령어 | 옵션 | 설명 |
|---|---|---|
git remote | -v | URL까지 상세 출력 |
git remote add | <name> <url> | 원격 저장소 연결 |
git remote set-url | <name> <url> | URL 변경 |
git branch | -a | 모든 브랜치 (원격 포함) |
git branch | -vv | upstream 정보까지 |
git branch | -M | 이름 변경 (강제) |
git branch | -d / -D | 삭제 (안전/강제) |
git checkout | -b | 브랜치 생성+이동 |
git checkout | -B | 브랜치 리셋+이동 |
git checkout | -- <file> | 파일 변경 취소 |
브랜치 전략
팀마다 다르지만 대표적인 전략 세 가지가 있어요.
Git-Flow
- master, develop, feature, release, hotfix 브랜치 사용
- 버전 관리가 중요한 앱(모바일 등)에 적합
GitHub-Flow
- main 브랜치 하나만 유지
- feature 브랜치 → PR → 머지
- 웹 서비스처럼 자주 배포하는 환경에 적합
Trunk-Based Development
- 모든 개발자가 main에서 직접 작업
- CI/CD가 잘 갖춰져야 가능
저는 개인 프로젝트에선 GitHub-Flow, 회사에선 Git-Flow를 씁니다.
Git 명령어 외우려고 하지 마세요. 이 글 북마크해두고 필요할 때 찾아보면 됩니다. 쓰다 보면 자연스럽게 손에 익어요!
← 블로그 목록으로