팀 프로젝트를 진행하며 Git에 대한 이해도가 부족한 부분이 있어, 원활한 협업을 위해 정리하고자 합니다.
팀장이 레포지토리 만든 후 팀원이 해야할 작업
1. 로컬에서 프로젝트 폴더를 생성한 후, 원격 저장소(repository)의 주소를 복사합니다.
2. 터미널에서 cd 폴더명 명령어를 입력해 해당 디렉터리로 이동한다.
cd 폴더명
3. git clone 레포지토리 주소를 실행하면 원격 저장소의 내용을 로컬로 복제할 수 있습니다.
git clone 레포지토리 주소
4. 최신 상태로 업데이트 (Pull)
git pull origin develop # 기본 브랜치가 develop일 경우
5. 새로운 브랜치 생성 및 이동 (Branch 생성)
git checkout -b 브랜치_이름
6. 작업 후 변경 사항 추가 (Add)
git add .
7. 변경 사항 커밋 (Commit)
git commit -m "작업 내용"
8. 원격 저장소에 푸시 (Push)
git push origin 브랜치_이름
9. 팀원에게 PR (Pull Request) 요청 (GitHub/GitLab에서 main 또는 develop 브랜치로 병합 요청)
10. 팀원과 코드 리뷰 후 승인되면 브랜치 병합
병합 후 로컬에서 최신 상태 유지하는 방법 (팀원이 PR을 날렸을 때 내 로컬을 최신으로 유지하는 방법)
PR(Pull Request)이 main(또는 develop) 브랜치에 병합되면, 다른 팀원들은 자신의 로컬 저장소를 최신 상태로 유지해야 합니다.
이 과정에서 현재 작업 중인지 여부에 따라 방법이 달라집니다.
작업 중일 때 (변경 사항이 있는 경우)
작업 중인 상태라면, 최신 코드를 가져오기 전에 작업 내용을 보호해야 합니다.
(A) 변경 사항을 아직 커밋하지 않은 경우
git stash # 변경 사항을 임시 저장
git checkout main # main 브랜치로 이동
git pull origin main # 최신 코드 가져오기
git checkout 작업중인_브랜치 # 다시 작업 중인 브랜치로 이동
git stash pop # 임시 저장한 변경 사항 적용
설명:
- git stash를 사용하면 아직 커밋하지 않은 변경 사항을 임시 저장할 수 있습니다.
- git stash pop을 하면 임시 저장했던 변경 사항을 다시 적용할 수 있습니다.
(B) 변경 사항을 이미 커밋한 경우
git checkout main # main 브랜치로 이동
git pull origin main # 최신 코드 가져오기
git checkout 작업중인_브랜치 # 다시 작업 중인 브랜치로 이동
git merge main # 최신 코드 병합
설명:
- git merge main을 실행하면 main 브랜치에서 가져온 최신 코드가 내 작업 브랜치에도 적용됩니다.
- 충돌이 발생할 경우 직접 해결한 후 git add . → git commit -m "충돌 해결" 후 다시 진행하면 됩니다.
- 충돌을 해결한 후에는 반드시 원격 저장소로 변경 사항을 푸시해야 합니다.
이어서 충돌 발생 시 최종 흐름
git checkout 작업중인_브랜치
git merge main # 병합
# 충돌 발생 시, 직접 해결 후:
git add .
git commit -m "충돌 해결"
git push origin 작업중인_브랜치 # 변경 사항 원격 저장소에 반영
왜 푸시해야 할까?
- 로컬에서 충돌을 해결하고 커밋했기 때문에, 이제 내 브랜치가 원격 저장소의 브랜치보다 앞서게 됩니다.
- 이를 반영하지 않으면 팀원들이 내 브랜치의 최신 상태를 받을 수 없으므로 git push가 필요합니다.
요약: git push를 반드시 해야 하는 이유
- 충돌을 해결하고 커밋했기 때문에, 로컬 브랜치가 원격 브랜치보다 앞선 상태가 됨.
- 푸시하지 않으면 원격 저장소에는 여전히 병합 전의 상태가 남아 있어, 팀원들이 최신 코드를 받을 수 없음.
- 팀원들이 pull을 했을 때, 충돌을 다시 해결해야 하는 문제가 발생할 수도 있음.
- git push를 실행해야 원격 저장소가 최신 상태로 업데이트되고, 팀원들과 동일한 코드 상태를 유지할 수 있음.
즉, 충돌 해결 후 커밋까지 했더라도, git push를 하지 않으면 팀원들이 이를 반영할 수 없으므로 반드시 푸시해야 합니다.
'git' 카테고리의 다른 글
Git Merge 후 충돌 해결하는 방법 (0) | 2025.02.26 |
---|---|
팀 프로젝트 후 나의 GitHub에 올리기 (0) | 2024.07.19 |