그럼 위 룰을 비단 main브랜치에만 적용하는 것이 아닌
보호받아야 하는 브랜치가 생기면 그 브랜치에도 저 옵션을 달아주면
혹시 실수로 merge되는 실수가 생기더라도 github에서 그렇게 되지 않도록 관리 해 준다.
해당 ref에 가서 pullRequest탭에 가면 다음과같은 버튼이있다.
들어가보면
다음과같은 화면이 나오는데 이때! 내가 내 브랜치를 어떤브렌치에 merge요청을 할것인지 선택을 해야한다.
위 사진에서는 main과 dev와 join_topic이렇게 새게의 브랜치가 있고 내가 작업한 브랜치가 join_topic이라면 dev에 merge요청을 하는 것이다.
위와같이 merge요청을 하는것이니까 main ref를 관리하는 사람이 알기쉽게 어떤 코드를 작성했는지 자세히 명세하고 Create pull request를 누르면 되는데 밑에 옵션에 Create draft pull request가 있다.
Create draft pull request 는 중간보고 같은 느낌 인 것이다.
아직 완료하지 않았지만 어떤지 리뷰를 받아보는 다음 옵션입니다.
그럼 팀원이 pr한걸 팀장이 다음과같이 코드와 변경사항을 쭉 둘러보고 위 Review changes버튼을 눌러서 위 사진에서의 세가지 옵션중에 하나를 선택할것이다.
그렇게 팀장이 Approve로 merge를 허락해 주면 팀장이 바로 merge를 해 줄 수 있지만 그렇게하면 팀장이 너무 힘들어 지기때문에 PR을 요청한 계정에서 직접 merge를 할 수도 있다.
하지만 소규모일때는 그렇게 책임을넘기기보단 팀장으로써 직접 merge를 하는것이 좋지않을까?....
팀원이 위 3번 rebase를 안하고 commit로그를 지저분하게 남긴상태로 pr요청이 왔다 이럴때 팀장은 웬만하면 스쿼시 머지를 하지 않고 Requestchanges를 날려서 merge요청을 캔슬내면서 코맨트로 "마! rebase해서 다시 요청해 임마!!"이런거 날리고 팀원이 다음에 똑같은 실수를 하지 않도록 하는것도 방법이 될것 같다.
그럼 팀원이 팀장의 거절메시지를 보고 시무룩해져서 rebase로 로그를 깔끔하게 하고 다시 push를 하면 거절당한다.
왜냐하면 형상이 맞지 않기 때문이다.
그렇다고 pull을 먼저 하게 되면 내가 rebase로 로그 수정한게 다시 물거품이 되기 때문에 강제로 push한다.
ex)
1. git pull origin dev (개발브렌치 동기화)
2. git checkout main
3. git merge --no-ff dev(개발브랜치 merge)
- 프로그램이 완성됐다고 가정했을때
배포단계
4. git tag (프로그램명)(버전명)
5. git push --tags origin main
이후 배워야 할 지식
그럼 이제 CI도구(젠킨스,트레비스,등등~)들을 이용해서 main에 푸시를 하게되면 바로 CI도구쪽으로 push돼서 test를 한 후에 배포를 하게된다.
자바로 치면 ci도구에서 테스트를하고 .Jar파일로 변경한후 배포 스크립트를 통해서 자동으로 클라우드에서 실행하도록 하는 등 여러가지 전략이 있다.