Git에서의 협업
2명 이상의 개발자가 하나의 프로젝트에서 서로 다른 작업을 진행하기 위한 방식
이때, 브랜치는 하나의 main브랜치에서 여러가지 작업을 위한 브랜치를 생성하는 것으로 소규모 협업에 적당함.
100명 이상의 개발자가 브랜치를 생성하고 올리는 작업을 한다면, 복잡하고 관리하기가 어려워진다.
이때는 git 저장소를 통째로 복사하여, 나중에 merge하는 방식을 쓴다.
소규모의 협업

원래 개인 github 스토리지에 코드를 직접 푸쉬할 수 있는 사람은 본인 뿐이다.
다른 사람이 내 원격저장소에 위치한 파일을 푸쉬하게 하려면 협력자로 등록해야 한다.
원격저장소의 Setting에서 Collaborators에 작업을 보낼 사용자의 이름이나, 이메일을 입력하면 된다.
대규모 협업하기
원격저장소를 복제하여 협업하는 방식을 쓴다.
단, 원본의 원격 저장소를 통째로 복제하게 되면 모든 커밋 이력도 복제된다는 점을 상기하자.
물론,merge를 시도하지 않은 이상, 원본의 원격저장소에 영향을 끼치지 않으므로 복제된 원격 저장소에서 코드를 수정하여 작업할 수 있다.
소규모 작업에선 두가지 방법 중 편한 방법을 쓰도록 하자.
원격저장소 브랜치 규칙



main 객체에 무분별하게 커밋되어 코드에 큰 오류가 발생하는 것을 막기 위해 커밋 규칙을 지정하는 것을 말한다.
주로, 팀원들의 동의를 얻어야지, main 스토리지에 merge 할 수 있도록 설정하는데 사용된다.
Pull request 방법


1. 브랜치를 최근에 푸쉬했을때 github에 아래와 같은 메시지가 출력된다.
2. compare & pull request 버튼을 클릭하면 어떤 브랜치에서 어떤 브랜치로 merge 시도 할 것인지에 대한 창이 나타난다.
pull request 시의 두가지 상태
Able to merge : 바로 merge가 가능
Can’t automatically merge : 충돌 발생으로 충돌 해결 후 merge 가 가능
pull request 시 주의 사항


#. 함께 프로젝트를 개발하는 다른 개발자가 알아보기 쉽도록 description을 명확하게 작성해줘야 한다.
#. 어떤 부분을 고쳤고, 어떤 식으로 수정을 진행하였는지 자세하게 적어두어야지, 협업하는 동료가 수정사항을 파악할 수 있다.
#. 아무런 내용을 표시하지 않으면 이미 수정된 부분을 다시 수정하는 사태가 발생할 수 있다.


3. Merge pull request 버튼 클릭을 하면 Confirm merge 버튼이 나타난다.
4. 해당 버튼을 누르고, 병합했던 브랜치는 꼭 삭제하여, 헷갈지 않도록 하자.
5. pull request가 완료되면 로컬저장소의 main 브랜치에서 gut pull origin main을 실행하여 프로젝트의 최신화작업을 해두어야 한다.
6. 팀원이 여러명이라면 모든 사람이 병합을 진행한 후 팀원들 모두 pull 작업을 해야한다.
7. 모든 개발자의 pull 작업이 진행 한 후, 로컬저장소의 main브랜치에서 git branch -d 명령어를 이용해야 한다.
8. 원격 저장소의 브랜치와 로컬 저장소의 브랜치가 동기화되어야 하기에 git fetch –p origin 명령어를 친다.
Pull request 충돌



둘 이상의 개발자가 개발 상황을 모르고 같은 파일의 같은 부분을 수정하였을 경우, 발생한다.
만약 merge를 시도하였을 때, pull request 시 충돌이 발생하게 되어, 그 부분을 수정해줘야 한다.
간단한 코드의 수정 체크일 경우, github 내에서도 해결이 가능하다.
협력자 삭제하기

공동 프로젝트 개발 도중, 개발자가 팀을 나갔을 경우, Setting -> Collaborators에서 권한을 삭제할 수 있다.
원격 저장소 복제를 통한 Pull request 방법


1. 복제하려는 원본 원격 저장소의 git 주소로 이동한다.
2. 원본저장소의 fork 버튼을 눌러, 내 깃 저장소로 내용을 복사한다.
3. vscode에서 파일을 생성하고 git bash 터미널을 열어, git clone 복사한 저장소 주소를 입력하여, 파일을 내 로컬로 가져오는 작업을 진행한다.
4. 원격저장소에서 프로젝트 작업을 진행한 후, git add -> git commit -> git push 순으로 내 원격 저장소에 정보를 저장하는 작업을 시도한다.


5. 복제 원격 저장소의 Pull request에 접속하면 자동으로 원본의 메인으로 merge할 것인지 선택되어 있다.
6. open pull request 버튼을 누르면 원본 저장소의 pull request에서 브랜치 규칙대로 review 작업을 하면 merge가 완료된다.
7. 브랜치 규칙을 만족하여 merge가 완료되면 내 저장소의 fork된 복제 저장소에서 Sync fork 버튼을 클릭해 다른 사람의 수정 내용을 반영시켜줘야 한다.
Commit 되돍리기
Git의 커밋된 상태를 이전으로 되돌리는데 사용된다.
그동안 개발했던 코드가 모두 삭제될 수 있기에 사용시 주의해야 한다.
Commit rollback을 위한 두가지 방법


git reset (옵션) 이동할 커밋(HEAD-n) : 단, 브랜치 이동시 기존 병합된 커밋은 삭제된다.
git revert 이동할 커밋 (HEAD-n) : 기존의 커밋 이력을 유지하면서 변경사항을 되돌리는 새로운 커밋을 생성.
주로, 프로젝트 개발 도중 코드 수정 후 오류가 발생하였을 떄, 특정 커밋을 기준 으로 한단계씩 내려가면서 문제를 찾아나간다.
비고 : 해당 포스팅은 코딩온 교육 자료를 참조하였습니다.
'프로젝트 수행 후 세부 정리' 카테고리의 다른 글
팀 프로젝트 최종 회고록 (5) | 2024.10.27 |
---|---|
[코딩온] 팀 프로젝트 1차 회고록 (3) | 2024.10.26 |