[Devlog] Github Pull request

선유준·2023년 4월 19일
0

Devlog

목록 보기
1/4

서론

깃, 깃허브를 이용하여 프로젝트 협업을 하던 중, 기능 구현을 하고 원본 레포지토리에 풀리퀘스트를 해야하는 상황이 생겼는데 익숙하지 않은 것이여서 정리를 해두려 한다.

(중간중간 잘못 된 방법이 있을 수 있으니 너무 이 글에만 의존하여 따라하지는 마시길..)

용어 정리

  • fork : 다른 사람의 repository를 내 Github repository로 복제하는 기능

  • upstream : 원본(저장소)위치

  • pull : 원격 저장소에서 최신 데이터를 복사하여 로컬 저장소로 가져오는 기능
    ( fetch + merge )

  • pull request(PR) : 수정사항 보내기

  • conflict : 충돌

  • merge : 합치기

사용한 전략

Feature-Branch(3 브랜치 전략) :

main, dev, feature의 이름을 가진 3개의 브랜치를 사용한다.

main : 배포를 위한 브랜치이며, 배포 전에는 건들일이 없는 브랜치이다.
dev : 개발병합 브랜치이며, 팀원들이 만든 기능은 dev 브랜치로만 머지한다.
feature : 기능개발 브랜치이며, 기능을 하나 구현할 때 마다 생성하여 작업하고 원격저장소로 Push & PR을 하여 dev 브랜치로 머지한다.

위의 feature 브랜치는 기능구현이 완료되면 삭제하며, 또 다른 기능을 구현할 때 생성하고 위의 작업을 반복한다.

본론

여기서 사용한 방법은 기본세팅만 성공적으로 완료한다면, 이후에는 반복적인 작업으로 기능구현 한 것을 쉽게 PR할 수 있을 것이다.

기본세팅 ( 최초 1회만 하면 된다 )

1. 초기설정

협업을 하게 되면 팀장, 팀원이 정해졌을텐데 아래의 단계를 역할에 맞게 기본 세팅을 하면 된다.

팀장

1. 로컬 프로젝트 기본셋팅 (CRA, 각종 문법 설정(eslint, prettier), .gitignore 등..)

2. Github에 업로드

팀원

1. 팀장 레포를 fork 해온다

2. 로컬에 fork한 레포지토리를 clone 한다
보통은 origin이라는 이름으로 저장소가 생성 될 것이다.

3. 팀장의 원격 저장소를 설정한다

git remote add upstream "https://github.com/asddfdsf.git"

이후 git remote -v 를 입력하여 origin은 내가 fork 한 레포지토리 주소, upstream은 팀장 레포지토리 주소로 설정 되어있는지 확인한다.

4. 로컬에서 정상적으로 돌아가는지 확인
(프론트엔드 기준으로는 npm start 가 되는지)

2. 코드 합치기

1. 로컬에서 기능 구현 (코드 수정)

2. fork 해온 본인 레포지토리에 push

3. 팀장 레포지토리의 지정 브랜치에 PR을 보냄
(위의 3 브랜치 전략을 사용하면 dev 브랜치로 보내면 된다)

4. Able to Merge가 뜬다면 Merge 하면 된다

반복작업

위의 Merge를 성공적으로 마쳤으면 아래의 작업을 기능을 하나 구현할 때 마다 반복해주면 된다.

( 기능 구현하기 전 branch를 생성하고, 구현 후(PR과 merge가 완료 되면) 삭제하는 것이 브랜치를 관리하기에 좋다. )

1. 팀원의 로컬에서 팀장의 브랜치를 pull한다. (최신화)
만약 내가 하나의 기능을 구현 중인데, 다른 팀원이 먼저 기능을 구현하여 팀장의 레포지토리에 PR을 보낸 상황이 생긴다.

이때 최신화를 하지 않고 PR을 보내면 에러가 발생하기 때문에 pull을 해야한다.

위에서 upstream 설정을 해줬다면 아래와 같이 명령어를 입력하면 된다.

// 팀장의 원격 저장소에 있는 dev 브랜치에서 최신 데이터를 가져온다.
git pull upstream dev

2. pull을 했으면 Conflict이 생길 가능성이 높은데 이것을 로컬에서 직접 해결한다.

위와 같이 변경된 사항, 현재 사항을 비교하며 보여주는데 병합하고 싶은 부분은 병합하고, 지우고 싶은 부분은 지우면서 충돌을 해결하면 된다.

3. Conflict을 해결 한 뒤, 변경한 내용을 commit하여 내가 fork한 저장소로 push 한다.

ex)

git push origin Feat/CRUD구현

4. 팀장의 지정 브랜치에 PR을 보내면 된다.


보통은 위의 반복작업으로 PR을 성공적으로 할 수 있으나, 예상치 못한 오류들이 자주 생기는데, 필자의 경우는 오류들을 검색을 이용하여 여차저차 해결하였지만 완벽히 이해하진 못해서 앞으로 알게 된 내용들은 아래에 하나씩 추가할 예정이다.

reference
ㄹㅇ 쉬운 깃허브 협업하기
깃&깃헙 브랜치 3개로 협업하기(주니어개발자 팀프로젝트)

profile
매일매일 발전하는 개발자를 목표로!

0개의 댓글