Infra/Git

[Git] PR merge 조건을 Git Branch Protection Rule으로 적용해보자

kth990303 2022. 5. 6. 02:01
반응형

PR을 Merge할 때, 특정 조건을 만족해야 머지가 가능하도록 하는 방법은 없을까? github에서 간단한 설정만 해주면 가능하다!

알고리즘 초급 스터디 PR

위 레포에는 최소한 2명 이상의 code reviewer의 approved가 있어야 머지해줄 수 있도록 해주었다. 뿐만 아니라, merge 종류는 squash and merge만 허용해주도록 변경해주었다. 어떻게 설정해준 것일까?


Git Settings General

레포지토리의 Settings - General에 들어가서 아래로 쭉 내리면 여러 기능들을 설정할 수 있는 것이 보인다.

Feature에서는 Issues, Projects, Discussions를 만들지 말지 결정할 수 있다. 아마 초기 세팅하면 Discussions는 생기지 않을텐데, 여기서 체크표시해주면 repository의 상단에 Discussions 기능을 이용할 수 있게 변경된다.

 

조금 더 내리면 위와 같은 화면이 보인다.

allow merge commits는 PR의 모든 커밋 이력들을 main에 넣어주는 기능이다. 그뿐만 아니라 merge 기록도 함께 남는다. squash merging은 모든 커밋들을 합쳐서 하나의 merge 기록만 올려주는 기능이다. rebase merging은 모든 커밋 이력들을 main에 넣어주지만, merge 기록은 남기지 않는 기능이다.

 

아래 글을 참고하면 도움이 될 듯하다.

https://im-developer.tistory.com/182

 

[Git] Merge 이해하기 (Merge / Squash and Merge / Rebase and Merge)

회사에서 Git을 사용해서 형상 관리를 하고 있다. 그 동안 내가 개인 repository branch에 commit, push등을 해본 적은 많지만 다른 사람과 협업을 하면서 branch를 생성하고 master에 merge를 해본 적은 없어서

im-developer.tistory.com

 

나는 squash and merge만 허용해주도록 했다.

그 외에 자동 병합 기능, delete auto head branch 기능도 있다. (참고 ->  head: PR 날리는 브랜치, base: upstream 브랜치)

참고하여 자신이 원하는 기능들을 택해주자.


Git Branch Protection Rule

브랜치 merge 방법을 general에서 정했다면, merge 조건을 정하는 것은 여기서 할 수 있다.

룰을 추가하지 않았다면 Add rule만 보일 것이다. 클릭해주자.

Branch name Pattern에는 룰을 적용할 base branch명을 적어주자.

 

이제 merging 조건을 설정해두기 위해 Require a pull request before merging을 체크표시 하면 위와 같이 체크항목들이 추가로 생길 것이다.  Require approvals로 최소 코드리뷰어의 approve가 몇 개 이상 있어야 머지 가능할지 선택할 수 있다. Require review from Code Owners로 레포지토리 주인의 코드리뷰를 필수로 필요로 하게 설정할 수 있다.

 

그 외에 상태체크, 코멘트 필수 조건도 걸 수 있으니 원하는대로 설정해보자~

 

반응형