독학으로는 해결할 수 없고, 꼭 필요한 프로젝트. 그 중에서도 Git을 잘 활용해야하는 것은 당연한 일인 것 같다.
멋사에서 처음으로 프로젝트(HTML+CSS)를 진행하며, 있었던 Git 활용을 어떻게 했었는지 적어보고자 한다.
Git으로 협업하기
1. 프로젝트용 저장소를 개설하고 기본 세팅을 해둔다. - 스크럼마스터(조장)
2. 해당 저장소를 fork후 clone한다. - 조원
3. git remote add \[별칭\] \[프로젝트용 저장소\]
- 조원
=> fork함으로써 조원 개인의 저장소url을 origin으로 설정되기에, 프로젝트용 저장소와 소통하기 위해서는 remote를 추가해줘야한다. // 예시: git remote add upstream "url"
4. git remote update
- 조원
=> 원격저장소와 로컬 저장소를 동기화 하는 과정. 원격 저장소의 모든 브랜치와 관련된 정보가 로컬 저장소에 업데이트된다.(기본적으로 clone한 프로젝트는 main(or master) 브랜치만 받아오므로, 동기화가 되어있지 않다.)
5. git branch -a
(선택) - 조원
=> 의무는 아니지만, 브랜치 정보들이 잘 불러왔는지 확인과 동시에, 조원들이 PR을 날릴 branch를 확인한다.
6. git checkout -t \[프로젝트 결과물을 통합할 branch\]
- 조원
=> checkout으로 브랜치를 전환하되, -t 옵션을 부여하여 로컬 브랜치와 원격 브랜치를 연결한다.
// 예시: git checkout -t upstream/develop
7. git branch \[본인이 작업할 브랜치\]
- 조원
=> [프로젝트 결과물을 통합할 branch]는 PR을 날려야할 곳으로, 새로운 브랜치를 생성한다.
// 예시: git branch feature1
8. git switch \[본인이 작업할 브랜치\]
- 조원
=> 본인이 맡은부분 개발
// 예시: git switch feature1
9. add -> commit -> push - 조원
=> 기능을 다 만들었다면, 본인의 저장소에 push
// 예시: git push origin feature1
10. fork한 본인 저장소에서 [본인이 작업한 브랜치] -> [프로젝트 결과물을 통합할 branch] 로 Pull & request - 조원
11. 프로젝트용 저장소에서 확인(코드리뷰 등)후 Merge pull request - 조장
12. 작업이 끝난 branch는 지운다. (선택) - 조원
13. 이후 새로운 작업시 git pull [별칭] [프로젝트 결과물을 통합할 branch]로 update 후 7번부터의 과정을 반복.
// 예시: git pull upstream develop
주의사항
- main(or master) 브랜치는 통상 작업용이 아닌, 배포용이므로 개별적인 작업을 위해 새로운 브랜치를 생성하여 작업하는 것이다.
- 작업하기 전에 항상 최신 상태로 동기화하는 것이 중요하므로, git remote update를 실행하여 원격 저장소의 최신 변경 사항을 가져와 로컬 저장소를 업데이트한 후 작업을 시작하는 것이 좋다.
- pull request한 것을 merge하기 전에 충돌(conflict)사항이 있을 수 있는데, 꼼꼼하게 확인후 merge하는 것이 좋다.