
시작하며
프로그래밍이라고 하면 역시 팀 프로젝트죠!
팀 프로젝트에서 절대 빠질 수 없는 것이 바로 코드 관리입니다.
그래서 복잡한 Git 명령어를 제가 이해한 방식으로 쉽게 정리해 보았습니다!
누군가에게 도움이 된다면 정말 기쁩니다 😊
1 기본 플로우 (프로젝트 작업 흐름)
| 단계 |
목적 |
명령어 |
| ① 최신 dev 가져오기 |
팀원의 최신 코드를 받기 |
git switch dev → git pull
|
| ② 작업 브랜치 생성 |
기능 1개 = 브랜치 1개 |
git switch -c feature/xxxx |
| ③ 코드 수정 |
기능 개발 |
|
| ④ 변경 스테이징 |
변경 사항 등록 |
git add . |
| ⑤ 커밋 생성 |
스냅샷 저장 |
git commit -m "설명" |
| ⑥ 원격 저장소로 push |
GitHub에 업로드 |
git push -u origin feature/xxxx |
| ⑦ PR 생성 |
dev에 병합 요청 |
GitHub에서 → |
| ⑧ 리뷰 & 머지 |
팀과 확인 후 통합 |
|
| ⑨ 작업 종료 |
브랜치 삭제 |
git switch dev → git branch -D feature/xxxx
|
2 자주 발생하는 실수 & 해결 방법
🔥 main 과 dev 의 역할과 관계
| 브랜치 |
역할 |
| main |
제품으로 배포 가능한 완성본(항상 안정 상태) |
| dev |
개발 중 기능들을 모아두는 통합 브랜치 |
전체적인 흐름
각 브랜치의 구체적 역할
| 이름 |
설명 |
| feature |
개인별로 기능 개발을 진행하는 브랜치 |
| dev |
feature 브랜치에서 온 변경사항을 모아 기능·동작을 확인하는 곳 |
| main |
dev 에서 검증이 끝난 완성된 코드만 반영되는 브랜치 |
왜 이렇게 나누는 걸까?
| 이유 |
설명 |
| 운영(본番) 환경 보호 |
main 을 항상 배포 가능한 안정된 상태로 유지하기 위해 |
| 안전한 작업 분리 |
개인 실수가 바로 main 에 반영되는 것을 방지 |
| 리뷰·테스트 과정 확보 |
전체 코드 품질을 유지하기 위해 |
권한 예시 규칙
| 브랜치 |
누가 수정할 수 있나? |
| feature |
각 개인 개발자 |
| dev |
누구나 PR(Pull Request)로 가능 |
| main |
리더 / 관리자만 승인·병합 가능 |
🔥 작업 중 dev가 업데이트되었다면?
git switch dev
git pull
git switch feature/xxxx
git rebase dev
git push -f
| 포인트 |
이유 |
| rebase |
최신 dev 변경 사항을 내 작업 위에 적용 |
| push -f |
rebase 과정에서 이력이 변경되기 때문 |
🔥 push 하려는데 rejected / non-fast-forward 오류 발생
해결:
git pull --rebase
git push
🔥 브랜치를 변경하려는데 변경된 파일 때문에 불가능한 경우
오류 메시지:
error: Your local changes to the following files would be overwritten
해결① : 임시 저장 (stash)
해결② : 임시 커밋
git add .
git commit -m "WIP"
git switch dev
🔥 컨플릭트 발생
컨플릭트란:
여러 사람이 같은 파일의 같은 부분을 수정하여 충돌한 상태
해결 절차:
- VSCode에서
<<<<<< HEAD 확인
- 적용할 내용 선택 (both / ours / theirs)
- 저장
git add .
-
git rebase --continue 또는 git commit
🔥 첫 push 시 upstream 설정 요구
git push -u origin feature/xxxx
👉 한 번 설정하면 이후에는 git push만으로 가능
🔥 PR 작성 예시
## 변경 내용
- 회원가입 화면 페이지 이동 기능 추가
- 로딩 애니메이션 추가
## 확인 방법
1. http://localhost:3000/register 접속
2. 버튼 클릭 시 login page로 이동
## 주의사항
- dev 리베이스 완료
3 브랜치 네이밍 규칙 (실무 표준)
| 종류 |
예시 |
의미 |
| feature |
feature/login-ui |
새로운 기능 |
| fix |
fix/login-crash |
버그 수정 |
| hotfix |
hotfix/api-token |
긴급 수정 |
| doc |
doc/readme-update |
문서 수정 |
| chore |
chore/refactor-components |
리팩터링 등 기타 |
4 merge vs rebase 어떤 것을 사용할까?
| merge |
rebase |
| 기록이 남는다 |
기록이 깨끗하다 |
| 충돌이 적다 |
push -f 필요 |
| 초급자에게 적합 |
중급자 이상 추천 |
💡 팀 개발에서는 feature → dev는 PR(merge)
dev 업데이트 시 rebase 추천
5 실전 플로우 차트 (헷갈리면 이거 보면 끝)
작업 시작
↓
git switch dev
git pull
↓
git switch -c feature/xxxx
↓
작업
↓
git add .
git commit -m ""
git push
↓
PR
↓
리뷰 후
git switch dev
git pull
git branch -D feature/xxxx
6 추가: 필살 커맨드 요약표
| 명령어 |
목적 |
git status |
상태 확인 |
git log --oneline |
커밋 히스토리 |
git diff |
변경 내용 확인 |
git stash pop |
stash 복원 |
git branch |
브랜치 목록 |
Discussion