GitHub - Branch, Merge

Birdie·2022년 12월 27일

https://www.youtube.com/watch?v=gqU9Tt1fYmU

23.01.03 발표

발표 with 고뭉남

(유튜브 링크)

발표 주제 선정 이유

우테코를 진행하면서 깃허브 사용법 때문에 너무 많은 시간이 들었다.
코드스쿼드에서는 협업을 중시하는데, 협업을 하는데 있어 사고를 미연에 방지하고자 발표주제를 선정하였다.

목차 (Branch)

  • 브랜치
  • 병합







브랜치

고뭉남은 맥북을 구입하고 싶지만, 사이트별 가격이 다르고, 맥북 기종별로 정리가 안되어 있어서 구입을 위한 정보가 너무나 복잡하게 정리되어 있었다. 이에 뭉남은 버디에게 맥북 사이트 별 정보를 종합해서 정리하는 웹을 만들자고 제안하는데....

브랜치란

위와 같이 뭉남과 버디는 함께 맥북 가격 정보를 정리하는 웹을 개발하기로 하였다. 이때 뭉남과 버디가 동시에 브랜치 없이 버전관리를 한다면 어떻게 될까?

-> 서로의 코드에 영향을 받아 원활한 개발이 이루어지지 않을 수 있다.

즉 브랜치란 독립적으로 작업을 할 수 있도록 도와주는 것입니다.

브랜시 생성 방법

첫 번째
  • 깃허브에서 진행

이렇게 만들고 싶은 브랜치 명을 입력하고
Create branch: 브랜치명
클릭하면 브랜치가 생성된다.

두 번째
  • 인텔리제이 내 터미널 통해서 진행
  1. git branch 브랜치이름

    • 브랜치 생성
  2. git checkout 브랜치이름

    • 생성한 브랜치로 전환
    • 생성한 브랜치와 이름이 동일해야 한다.
  3. git push origin 브랜치이름

    • 원격 저장소에 반영하기
    • 위의 브랜치 이름과 동일해야 한다.

(1, 2를 동시에 진행하는 방법으로는)

git checkout -b donhyun

브랜치 생성 후 규칙 정하기

브랜치를 생성한 후 규칙은 파트너와 협의 후 결정하도록 한다.

1. [master] 브랜치에 직접 커밋하지 않기 
2. 기능 개발을 하기 전에 [master] 브랜치를 기준으로 새로운 브랜치를 만든다.
3. 기능 개발을 위한 브랜치 명은 [feature/기능명] 형식으로 하고, 커밋은 한명만 한다.
4. [feature/기능명] 브랜치에서 기능개발이 끝나면 [master] 브랜치에 이를 합친다.

병합 (Merge)

머지가 머지?

Git 에서 브랜치와 브랜치를 합치는 명령어는 Merge 이다.
뭉남과 버디가 개발이 끝나면, 각자 만든 두 개의 브랜치를 [master] 브랜치에 합쳐야 한다.

병합하는 방법

첫 번째 - git bash 이용

두 번째 - pull request 이용


New pull request 클릭!

풀리퀘스트를 하게 되면

어떤 내용이 변경되었는지 볼 수 있고
Commit merge 를 통해 병합할 수 있다.


풀리퀘스트의 장점은 Merge 시 충돌이 발생한다면 사전에 알려준다는 것이다.

충돌(Conflict) 발생 시 해결방법


merge 에서 충돌이 발생하면 위와 같이 어떠한 부분에서 충돌이 되었는지 알려주게 된다.

올바르게 수정하면 충돌 없이 병합되는 것을 알 수 있다.

pull request 를 통한 conflict

깃허브에서 conflict 되었다고 알려준다.
여기서 Resolve conflicts 클릭하면

어떠한 부분에서 충돌이 발생했는지 알려준다.

충돌이 발생한 부분을 수정하고 Commit merge 를 클릭하면 정상적으로 병합할 수 있게 된다.


충돌을 방지하기 위한 방법

버전 관리 시스템 (Version Controll System) VCS 활용하기
밑의 세 가지 방법은 Git 기반 워크플로우

1. Git flow

  • 사용처
    버저닝이 필요한 애플리케이션에 사용한다.

Develop
-> 개발자들이 이 브랜치를 기준으로 가지를 치고 병합한다.

Feature
-> 새로운 기능을 추가하는 브랜치
(develop 브랜치에서 나오고 들어간다.)

Release
-> develop 브랜치에서 개발한 내용을 master 브랜치에 병합하기 전 품질검사를 하는 브랜치

Hotfix
-> 버그가 발생하면 모두 Hotfix 브랜치로 들어가서 수정한다.
수정 후 develop, master 브랜치에 반영한다. (release 전이라면 release 브랜치에도 반영한다.)

2. GitHub flow


Git flow 가 가진 복잡성 모두 제거
유지 브랜치는 master 하나만 둔다.
master를 제외한 브랜치는 개발자의 재량에 맡긴다.

  • 특징
  1. master 브랜치는 언제든지 배포가 가능해야 한다.
  2. 새로운 프로젝트는 master 기반으로 별도 브랜치를 생성한다.
  3. 원격 저장소에 수시로 push한다. (git flow 와 상반되는 방식)
  4. 병합된 master 브랜치는 즉시 배포할 수 있어야 하고, 배포해야만 한다.

상시 배포

3. GitLab flow


GitHub flow 는 너무나도 간단하여 배포, 환경 구성, 릴리즈, 통합에 대한 이슈를 남겨둔 것이 많다. 그것을 보안하기 위해 GitLab 에서 관련 내용들을 추가적으로 덧붙여 설명한 것을 일컫는다.

0개의 댓글