오늘의 TIL
오늘은 조원들과 팀 프로젝트를 대비해서 깃으로 협업을 하는 연습을 했다. 그 과정을 정리했다.
1️⃣ GIT 협업 WORKFLOW: 브랜치 생성 과정 포함
Git에서 협업할 때는 각 기능(feature)별 브랜치를 생성하고, 독립적으로 작업한 후 main(또는 develop) 브랜치에 병합하는 방식을 사용한다.
✅ Git 협업 기본 Workflow
- 최신 코드 가져오기 (main 브랜치 기준)
- git checkout main # main 브랜치로 이동 git pull origin main # 원격 저장소에서 최신 코드 가져오기
- 새로운 브랜치 생성 후 이동
- 브랜치 네이밍 규칙
- 기능 개발: feature/기능이름
- 버그 수정: bugfix/버그이름
- 긴급 수정: hotfix/긴급수정내용
- 릴리즈 브랜치: release/버전번호
- 브랜치 네이밍 규칙
- git checkout -b feature/기능이름 # 기능 개발을 위한 브랜치 생성 및 이동
- 코드 작업 후 변경 사항 커밋하기
- git add . # 변경된 파일 추가 git commit -m "feat: 새로운 기능 추가" # 커밋 메시지 작성
- 원격 저장소에 브랜치 Push
- git push origin feature/기능이름 # 원격 저장소에 새로운 브랜치 push
- PR(Pull Request) 생성 및 코드 리뷰 요청
- GitHub, GitLab 등에서 feature/기능이름 브랜치를 main 브랜치로 병합하기 위한 PR을 생성.
- 팀원들의 코드 리뷰 후 승인이 완료되면 main 브랜치에 병합.
- 브랜치 정리 (병합 완료 후)
- git checkout main # main 브랜치로 이동 git pull origin main # 최신 코드 가져오기 git branch -d feature/기능이름 # 로컬 브랜치 삭제 git push origin --delete feature/기능이름 # 원격 브랜치 삭제 (필요할 경우)
2️⃣ Push 했을 때 충돌이 일어나는 경우 + 해결 방법
Git에서 충돌(conflict)이 발생하는 주된 이유는 같은 파일의 같은 부분을 여러 사람이 동시에 수정했기 때문이다.
🔥 충돌이 발생하는 경우
- 두 명의 개발자가 같은 파일을 수정함.
- A 개발자가 먼저 변경 사항을 main에 Push.
- B 개발자가 자신의 브랜치에서 변경 작업 후 git push origin feature/기능이름 시도.
- 충돌 발생! (B 개발자의 로컬 브랜치가 최신 main을 반영하지 않고 작업했기 때문)
✅ 충돌 해결 방법
- 최신 코드 가져오기 (pull 실행 시 충돌 발생 가능)
git pull origin main # main 브랜치의 최신 변경 사항을 가져옴 - 충돌 해결하기
- 충돌이 발생한 파일을 열어 충돌 부분을 직접 수정.
- Git이 충돌을 감지하면, 해당 파일에 <<<<<<<, =======, >>>>>>> 같은 구분선이 표시됨.
- 올바른 코드로 수정 후 저장.
- 충돌 해결 후 커밋
git add . git commit -m "fix: 충돌 해결" - 병합 완료 후 push
git push origin feature/기능이름 # 충돌이 해결된 브랜치를 원격 저장소에 push
3️⃣ 충돌 발생 후 git pull origin main 했더니 자동으로 merge된 이유
보통 git pull origin main을 실행하면 main 브랜치의 최신 변경 사항을 가져오면서 자동으로 병합(merge) 이 된다.
✅ 자동 병합이 되는 이유
- 충돌이 발생했지만, Git이 자동으로 해결 가능한 경우 (ex: 서로 다른 파일을 수정했거나, 코드 변경 순서에 영향이 없는 경우).
- 이전에 발생한 충돌이 이미 해결된 경우.
- git pull을 실행할 때 --rebase 옵션이 적용되면서 자동으로 충돌이 정리됨.
✅ 자동 병합이 되지 않는 경우 해결 방법
git pull --rebase origin main # rebase 방식으로 최신 코드 가져오기
git add .
git commit -m "fix: rebase 후 충돌 해결"
git push origin feature/기능이름 # 변경 사항 push
📌 Git 충돌이 발생하면 무조건 git pull을 하기 전에 충돌 원인을 먼저 확인하는 것이 중요하다!
'내일배움캠프 TIL' 카테고리의 다른 글
| 2025.02.11 TIL - Django : 흐름도 (0) | 2025.02.12 |
|---|---|
| 2025.02.10TIL : Django Admin (0) | 2025.02.10 |
| 2025.02.06 TIL : 가상환경 설정 문제 (0) | 2025.02.06 |
| 2025.02.05TIL - Django : PostDetail (0) | 2025.02.05 |
| 2025.02.04 TIL : Django - Serializer (0) | 2025.02.04 |