Github에서 Pull request를 merge 시 git에서 제공하는 여러 merge option을 팀 공유를 위해 간략히 정리함
Github에서 Pull request merge 시 아래 가이드와 같은 merge 방법이 있음.
- Merge pull request
- Squash and merge
- Rebase and merge
Merging a pull request
각 방법들은 git에서 제공하는 merge 방법으로 아래 가이드를 보면 이해하기가 쉬울 듯함.
About merge methods on GitHub
브랜치 통합하기
: https://backlog.com/git-tutorial/kr/stepup/stepup1_4.html
3.2 Git Branching - Basic Branching and Merging
: https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging
: https://git-scm.com/docs/git-merge
3.6 Git Branching - Rebasing
: https://git-scm.com/book/en/v2/Git-Branching-Rebasing
: https://git-scm.com/docs/git-rebase
GitHub 가이드가 가장 깔끔하게 설명을 하고 있어 간략히 발췌하면
Merge pull request는
. Pull request의 모든 commit을 default branch로 추가하고 merge commit을 생성한다.
. git merge 시 --no-ff option을 사용하는 것이라 merge commit을 생성하게 되는 것이다.
: 이 옵션은 주로 특정 branch나 개발 history를 유지하려는 경우 사용됨.
: https://stackoverflow.com/a/14865661
: https://koreabigname.tistory.com/m/65
아래 그림을 보면 feature branch에서는 default branch 기반으로 D,E를 생성하였기 때문에 A,B,C 다음 D,E를 추가하면 되지만 merge commit을 생성하여 default branch에 추가하게 된다.
Squash and merge는
. 용어와 같이 pull request의 commit을 하나로 모아 default branch에 추가하여 merge하게 된다.
. Repository 설정에서 squash merging을 허용해야 한다.
. 수정/개발 hisotry가 중요하지 않다면 이 옵션을 사용하여 default branch를 깔끔하게 관리할 수도 있겠음.
Project 수행 시 어떻게 branch를 관리하면 좋을지에 대한 내용이니 꼭 읽어보고 알아두어야 함.
A successful Git branching model
: https://nvie.com/posts/a-successful-git-branching-model/