3단계는 리뷰 요청을 보낸 후 pull request가 통합(merge)된 이후의 과정을 다룹니다.
1. merge를 완료했다는 통보를 받으면 브랜치 변경 및 작업 브랜치 삭제(option)를 합니다.
승인 후 merge를 완료했다는 통보를 받으면 해당 기능은 완료된 상태가 됩니다. 이제 작업한 브랜치를 삭제하고 다음 기능 개발을 위한 새로운 브랜치를 생성해야 합니다.
git checkout 본인_아이디
git branch -D 삭제할_브랜치이름
ex) git checkout smpark1020
ex) git branch -D test-practice
현재 브랜치 확인
checkout을 통해 브랜치를 변경한 후 작업 브랜치를 삭제한 후의 상태는 다음과 같습니다.
2. 통합(merge)한 저장소와 동기화하기 위해 통합한 저장소 추가(최초 한번만)
다음 기능을 진행하기 위해 브랜치를 생성하려고 합니다. 그런데 로컬 PC의 현재 상태는 최신 코드가 아니기 때문에 개발을 이어서 진행할 수 없습니다. 따라서 통합(merge)된 코드와 동기화하는 작업을 진행해야 합니다.
git remote add {저장소_별칭} base_저장소_url
ex) git remote add upstream https://github.com/next-step/java-lotto-pro.git
// 위와 같이 통합된 저장소를 추가한 후 전체 remote 저장소 목록을 봅니다.
git remote -v
- git remote add 명령은 최초 1회만 진행하면 됩니다.
- 로컬PC에서 통합된 저장소를 바라볼수 있도록 하는 작업입니다.
- origin, upstream은 별칭(alias)입니다.
3. 통합된 저장소에서 자기 브랜치 가져오기(또는 갱신하기)
앞 단계의 remote add
명령은 로컬 PC에서 통합된 저장소에 접근할 수 있도록 이름을 부여한 것입니다. 앞 단계의 예제는 upstream이라는 이름을 부여했습니다.
앞 단계에서 통합된 저장소에 이름을 부여했다면 이번 단계는 fetch 명령으로 동기화하고 싶은 통합된 저장소의 브랜치를 가져오기 해야 합니다.
현재 상태에서 branch 목록을 확인하면 upstream이 존재하지 않습니다.
이제 upstream을 바로보도록 설정하겠습니다.
git fetch upstream {본인_아이디}
ex) git fetch upstream smpark1020
다시 branch 목록을 확인하면 upstream이 추가된 것을 확인할 수 있습니다.
fetch 명령을 실행한 후의 상태는 다음과 같습니다.
fetch 명령을 실행한 후 git branch -a
명령을 실행하면 remotes/upstream/smpark1020과 같은 브랜치가 생성된 것을 확인할 수 있습니다.
4. 통합된 저장소 브랜치와 동기화하기
현재 상태는 통합된 저장소 브랜치를 가져오기는 했지만 아직까지 로컬 저장소에 최신 버전의 코드가 반영된 것은 아닙니다. rebase 명령을 실행해 통합된 저장소와 로컬 저장소의 브랜치를 동기화합니다.
현재 로컬 smpark1020 브랜치의 코드 상태는 아무 작업도 되어 있지 않은 상태입니다.
이제 rebase 작업을 하겠습니다.
git rebase upstream/본인_아이디
ex) git rebase upstream/smpark1020
이제 작업한 코드가 생성된 것을 확인할 수 있습니다.
rebase 명령을 실행한 후의 상태는 다음과 같습니다.
5. 새로운 기능을 개발하기 위한 브랜치 생성
지금까지 과정을 통해 새로운 작업을 시작하기 위한 준비 작업을 마쳤습니다. 다음 단계는 코드리뷰 플로우 - 1단계의 4번 항목의 checkout 명령으로 새로운 브랜치를 생성합니다.
git checkout -b 브랜치이름
ex) git checkout -b string-add-calculator
checkout 명령으로 새로운 브랜치를 생성한 후의 상태는 다음과 같습니다.
- step2를 string-add-calculator로 생각하면 됩니다.
다음 개발을 진행하기 위한 모든 준비 작업을 마쳤습니다.
다음 개발이 끝나면 코드리뷰 플로우 - 1단계의 7번 이후의 add, commit, push를 진행하고, 다시 pull request를 보내면 됩니다.
PR에서 충돌이 발생하는 경우
통합 저장소와 rebase를 하지 않은 상태에서 브랜치를 생성하면 충돌이 발생할 수 있습니다.
- git checkout 본인_아이디 (예: git checkout smpark1020) 명령을 실행해 계정 브랜치로 이동합니다.
- git reset --hard upstream/본인_아이디 (예: git reset --hard upstream/smpark1020)
- git checkout 기능_브랜치 (예: git checkout string-add-calculator)
- git merge 본인_아이디 (예: git merge smpark1020)
위 명령을 실행하면 충돌이 발생할 것입니다. 충돌을 해결한 후 add, commit, push를 진행하면 PR 충돌이 해결되어 리뷰 요청을 할 수 있습니다.
참조
'Git' 카테고리의 다른 글
코드리뷰 플로우 - 2단계 (0) | 2021.11.04 |
---|---|
코드리뷰 플로우 - 1단계 (0) | 2021.11.04 |
AngularJS Commit Message Conventions의 type 종류 정리 (0) | 2021.10.02 |
댓글