Git & Github으로 협업하는 법
1. 브랜치 활용하기
보통 파일을 만든 후 수정하고 싶긴 한데 원본은 그대로 두고 싶을 때 최최종 복사본을 만들곤 한다. 하지만 회사에서 몇 기가 씩 하는 프로젝트도 복사본을 만들 수는 없다. 이럴 때 사용하는 것이 브랜치다.
- 브랜치 생성 명령어 : git branch 브랜치 이름
- 브랜치 확인 명령어 : git branch
- 앞에 * 있고 색깔 있는게 현재 위치
- 끝에 (END) 있는건 q 누르면 빠져나옴
- 브랜치 이동 명령어
- git switch 브랜치이름
- git checkout 브랜치이름
- 브랜치 한 번에 생성 & 이동
- git switch -c 브랜치이름
- create의 약자
- git checkout -b 브랜치이름
- branch의 약자
- git switch -c 브랜치이름
만약 새로운 브랜치에서 코드를 수정한 후 add, commit하고 main으로 이동하면 내가 저장한 수정본이 남아 있을까? ⇒ NO! 최최종에서 변경한다고 최종이 바뀌지 않음. 코드 짠 브랜치를 main에 합쳐야 함. 왜? 협업하니까. main을 최종 브랜치처럼 사용하는 것.
- 브랜치 합치는 명령어
- git switch 최종브랜치이름
- git merge 합칠브랜치이름
- 최종브랜치로 이동 먼저 하고 merge 하는 것.
2. Pull Request 활용하기
사실 git merge 잘 안씀. 터미널이 아니라 깃허브에서 합치게 되는데, 합치기 전에 어떻게 짰는지 보고 싶거나, 이렇게 합쳐도 되는지 안되는지, 수정해야 하는건 없는지 깃허브에서 보고 판단할 수 있기 때문. 온라인으로 올려 놓으면 코드 리뷰 온라인으로 쉽게 할 수 있으므로. 이거 말고도 보안이나 테스트 자동화의 이유 등이 있음.
Github에서 merge 하기
- Pull Request
- Pull : 당겨서 합치는 것 (merge)
- Request : 요청하다.
- main으로 당겨와서 합쳐도 괜찮을까요?
- 내 브랜치에서 수정
- add, commit으로 수정된 코드 저장
- github에 업로드하기 : git push origin 브랜치명
- github으로 이동
- Compare & pull request 클릭
- 최종 브랜치 (base) ← 기능 브랜치 (compare) 확인
- Pull request 메시지 작성
- Create pull request 클릭
- Merge pull request 클릭
- Confirm merge 클릭
- 로컬 main 브랜치로 이동 : git checkout 브랜치명(main)
- github 코드 반영 : git pull origin 브랜치명(main)
정리
- 브랜치 생성 및 이동
- 기능 개발 및 코드 저장
- 코드 업로드 및 Pull request 생성
- github에서 merge
- 내 로컬에도 반영
3. 협업 실전 가이드
근데! 메인 브랜치가 배포용이라는 게 굉장히 큰 문제점. 합치고 나면 사용할 수 있게 바로 배포를 해야 함. 근데 내가 만든 걸 테스트도 안하고 바로바로 쓴다? 안됨.
문제점1) 완벽하게 기능 개발해야 merge 가능
- 배포용에 로그인, 로그아웃 기능 없이 회원가입만 합쳐버리면 회원가입만 가능한 서비스가 되어버림.
- 일단 다 만들고 합쳐버린 후 문제가 발생하면 이 문제가 어디서 생긴건지 찾기도 어렵고 버그 수정도 오래 걸림.
- 작은 단위로 개발하면 버그 수정 좀 더 쉬울 수 있음.
해결책1) 개발용 브랜치
- Main 브랜치 : 배포용, develop 브랜치 : 테스트 용, 기능 브랜치 : 기능 개발용
- 합치는 건 develop으로
- 기능 브랜치를 develop 브랜치로 합치고, 이걸 배포할 때 develop을 main에 합침.
문제점2) 그냥 합치면 위험함
- 각각은 에러가 나지 않아도 합쳤을 때 에러 날 수 있음. 그냥 충돌 안 난다고 합쳐 버리면 안됨.
- 예로 변수 이름을 똑같이 선언하는 등등…
해결책2) 로컬에서 먼저 테스트
- 합치기 전에 git pull 해서 내 컴퓨터(로컬)로 가져와 테스트
- git pull origin dev
- 이 뿐 아니라 충돌 났을 때도 이렇게 해결 가능함.
실전 가이드
- 초기 세팅
- 팀장 : 초기 코드 작성 및 Github 업로드
- 폴더 생성
- 초기 코드 작성
- git init, add, commit
- Github 레포지토리 생성
- Github 업로드 (git push)
- 팀장 : dev(혹은 develop) 브랜치 생성
- git switch -c dev (로컬에서 dev 브랜치 생성)
- git push origin dev (github에도 반영)
- Github에서 dev 브랜치를 default로 설정
- Settings
- Default branch의 화살표 클릭
- 브랜치 선택후 Update 클릭
- 팀원들을 collaborator로 등록
- 팀원 : git clone 하기
- 팀장 : 초기 코드 작성 및 Github 업로드
- 기능 개발 시작
- 기능 브랜치 생성 및 기능 개발
- git switch -c 기능브랜치명
- 코드 작성
- 코드 저장 및 업로드 (add, commit, git push origin 기능브랜치명)
- Pull request 생성
- 코드 작성자 : 리뷰 요청하기
- 코드 리뷰어 : 리뷰하기
- 메시지 작성 후 Start a review 클릭
- Finish your review 클릭
- 메시지 작성 후 코멘트 혹은 승인 혹은 변경 요청 중 하나 선택
- Submit review 클릭
- 합치기 전 내 로컬에서 충돌 해결 및 테스트
- 기능브랜치에서 git pull origin dev
- merge
- 수정 사항이 있는 경우 git add, commit, push
- Github에서 merge 버튼 클릭
- 기능 브랜치 생성 및 기능 개발
- 추가 기능 개발
- 내 로컬의 dev에도 변경 사항 반영
- dev 브랜치로 이동
- git pull origin dev
- 다음 기능 개발
- 기능 브랜치 생성 및 코드 작성
- add, commit, push
- pull request 생성 및 코드 리뷰
- 내 로컬에서 충돌 해결 및 테스트
- 코드 업로드 및 merge
- 내 로컬의 dev에도 변경 사항 반영
'내배캠 > TIL' 카테고리의 다른 글
24. 08. 02 (0) | 2024.08.02 |
---|---|
24. 08. 01 (0) | 2024.08.01 |
24. 07. 31 (0) | 2024.07.31 |
24. 07. 30 (0) | 2024.07.30 |
24. 07. 29 (0) | 2024.07.29 |