🐾

Git 완전 가이드 : 팀 프로젝트

に公開

venom

시작하며

프로그래밍이라고 하면 역시 팀 프로젝트죠!
팀 프로젝트에서 절대 빠질 수 없는 것이 바로 코드 관리입니다.
그래서 복잡한 Git 명령어를 제가 이해한 방식으로 쉽게 정리해 보았습니다!
누군가에게 도움이 된다면 정말 기쁩니다 😊


1 기본 플로우 (프로젝트 작업 흐름)

단계 목적 명령어
① 최신 dev 가져오기 팀원의 최신 코드를 받기 git switch devgit 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 devgit branch -D feature/xxxx

2 자주 발생하는 실수 & 해결 방법

🔥 main 과 dev 의 역할과 관계

브랜치 역할
main 제품으로 배포 가능한 완성본(항상 안정 상태)
dev 개발 중 기능들을 모아두는 통합 브랜치

전체적인 흐름

feature → dev → main

각 브랜치의 구체적 역할

이름 설명
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 stash
git switch dev

해결② : 임시 커밋

git add .
git commit -m "WIP"
git switch dev

🔥 컨플릭트 발생

컨플릭트란:
여러 사람이 같은 파일의 같은 부분을 수정하여 충돌한 상태

해결 절차:

  1. VSCode에서 <<<<<< HEAD 확인
  2. 적용할 내용 선택 (both / ours / theirs)
  3. 저장
  4. git add .
  5. 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