IT's Jenna

CH 3. 여러 명이 함께 Git 으 로협 업 하 기 본문

Git/팀 개발을 위한 Git, GitHub 시작하기

CH 3. 여러 명이 함께 Git 으 로협 업 하 기

developer Jenna 2024. 8. 5. 06:57

브랜치의 필요성

여러 명이 동시에 작업하는 경우

여러 명이 동시에 같은 파일을 작업할 때, 브랜치를 이용하면 이슈 없이 코드 병합이 가능합니다. 혼자서 작업할 때는 커밋이 한 줄로 쌓이지만, 여러 명이 작업할 경우 아래 그림과 같이 병렬로 커밋이 쌓입니다.

브랜치의 역할

브랜치를 이용하면 다른 작업자들이 같은 파일을 나눠서 작업할 수 있습니다. 이는 코드 병합 과정에서 충돌을 최소화하고 효율적인 협업을 가능하게 합니다.

 


브랜치란?

정의

브랜치는 물리적이고 독립적인 길이 아닌 포인터의 개념으로, 특정 커밋을 가리키고 있는 것으로 분기처리를 합니다.

이는 프로젝트 전체를 복사하는 것이 아니고 그저 가리키기만 하면 되기 때문에 가볍고 빠르게 분기처리가 가능합니다.

활용

같은 파일을 수정한 경우 아래 그림과 같이 브랜치가 나눠지게 되며, 이를 통해 각자 작업한 내용을 독립적으로 관리할 수 있습니다.

 


HEAD 포인터

정의

HEAD는 현재 체크아웃된 브랜치나 커밋을 가리키는 특수한 포인터입니다. 이를 통해 다양한 브랜치나 커밋 사이를 자유롭게 이동할 수 있습니다.

사용 예시

  • 고양이 브랜치
  • main 브랜치
  • 커밋 1, 2, 3 시점

아래는 일반적인 브랜치 병합 규칙입니다.


브랜치 이동 및 병합

브랜치 이동 명령어

  • git checkout [이동할 브랜치 명]

병합(Merge)

병합은 두 버전의 합집합을 구하는 것을 의미합니다.

병합 종류

  1. merge commit (병합 커밋): 두 개의 다른 파일들이 충돌 없이 병합됨
  2. fast-forward (빨리감기): 하나의 파일이 수정됨
  3. conflict (충돌): 두 개의 다른 파일들이 충돌되면서 병합됨

충돌 병합

일반적으로 충돌이 발생하면 main이 아닌 본인의 브랜치에서 먼저 충돌을 해결합니다.

  • 명령어: git pull merge origin main

풀 리퀘스트(Pull Request)

정의

풀 리퀘스트는 협력자에게 브랜치 병합을 요청하는 메시지를 보내는 것입니다. 이는 GitLab의 Merge Request와 동일합니다.


릴리즈(release)

정의

릴리즈는 태그를 붙여서 개발 버전을 지정하는 것을 의미합니다.

태그 종류

  1. lightweight: 특정 커밋에 대한 포인터 역할만 수행
  2. annotated: Git 데이터베이스에 완전한 객체로 저장되어 태그한 사람의 이름, 이메일, 날짜, 태그 메시지 등을 함께 저장

태그 생성 명령어

  • annotated 태그: git tag -a <TAG NAME> -m "<TAG MESSAGE>"
  • lightweight 태그: git tag <TAG NAME>
Comments