Git

구현사항 별로 여러 PR 만들기

Git 사용법

Posted by jopemachine on April 2, 2020 Updated on September 25, 2022

구현사항 별로 여러 PR 만들기

PR을 날린 후 같은 브랜치에 커밋을 하면 자동적으로 해당 PR에 변경사항이 반영된다. 따라서, 해당 PR 내용에 해당하는 커밋의 경우 따로 PR을 다시 날리지 않아도 된다. 그렇다면, 기존 PR의 내용이 병합되지 않은 상태에서 다른 내용의 PR을 날리고 싶다면 어떻게 해야할까?

How to do - git cherry pick을 이용

1 - 새로운 브랜치를 만든다.

이전 PR의 변경사항과 이번 PR의 변경사항이 반영되어 있는 현재 브랜치를 내버려두고,

git checkout -b 명령어로 새로운 브랜치를 만들고, 해당 브랜치로 체크아웃한다.

해당 브랜치의 이름은 PR의 내용을 나타낼만한 것으로 하면 좋다.

1
$ git checkout -b <new branch name>

2 - 수정 하려고 하는 커밋 이전의 내역으로 되돌아간다.

git reset --hard 명령어로 head를 이전 PR 이전 (즉, upstream 저장소의 head) 으로 되돌린다.

1
$ git reset --hard <commit ID>

3 - 이번 PR내역을 수정한다.

git cherry-pick 명령어로 이번 PR의 변경사항만을 체크아웃 전 브랜치에서 가져온다.

4 - 해당 변경사항을 푸시한다.

새로운 브랜치의 변경사항을 푸시한다.

1
$ git push --set-upstream <remote-branch name>

5 - 새로 만든 브랜치에서 새 PR을 날린다.

새 브랜치에서 날린 PR은 이전의 PR과 독립적인 PR로 취급되어 들어간다.

애초에 이런 상황이 발생하지 않도록 각 기능 별로 브랜치를 나눠 개발하면 이런 상황을 만들지 않아도 된다.

하지만, git이 제공하는 cherry-pick, reset 등의 명령어를 잘 이용하면 실수하거나 문제 상황에 봉착해도 당황하지 않을 수 있으니 잘 알아두는 편이 좋을 것 같다.