Post

데브코스 TIL - Day 5

23년 11월 20일 강의를 들은 내용과 추가로 더 학습한 내용을 기록한 글입니다.

브랜치 이름 규칙

메인 브랜치 : 사용자들이 사용하는 버전

메인 브랜치는 사용자들이 사용하는 버전이기때문에, 브랜치를 이용해 프로젝트를 복제한 뒤에 기능을 개발하거나 오류를 수정해야함!

메인 브랜치에 바로 개발/오류 수정 등을 하면 큰일남!!!

■ 브랜치 5종류

  • main(master): 서비스를 직접 배포하는 역할
  • feature(기능): 기능별로 개발하는 브랜치
  • develop(개발): feature에서 개발된 내용을 저장하는 브랜치
  • release(배포): 배포 하기 전 내용을 QA(품질 검사)하기 위한 브랜치
  • hotfix(긴급 수정): main 브랜치로 배포를 하고나서 버그가 생겼을 때 빨리 고치기 위한 브랜치

■ 이름 규칙 예시

  • 기능 개발: feature/login, feature/select-product
  • 출시 준비: release-1.3, release-1.4
  • 긴급 수정: hotfix-1.3.2, hotfix-1.2.1

※ 브랜치를 만든다고 브랜치가 생성되는 것은 아님, 브랜치를 생성하고 새로운 커밋을 1개 이상해야 브랜치로 이용할 수 있음

■ 브랜치 전략

Git flow (깃 플로우)

브랜치를 나누는 방법에 대한 분류(전략)

Git flow에서 가장 많이 사용되는 두가지 전략

◎ fast-forward

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxeb6I%2FbtqMM3WrFWk%2Fj7sIDA2w64IX3YkMxRKZq0%2Fimg.gif

git merge
모든 커밋을 변경없이 한 줄로 합칠 수 있는 상태
브랜치의 모든 커밋 내역이 병합 브랜치에 그대로 들어감

■ 순서
A 브랜치에서 B 브랜치를 생성한 시점부터,
A 브랜치에는 아무런 추가 구현을 하지 않고
B 브랜치만 추가 구현한 뒤
B 브랜치A 브랜치를 합치면
A 브랜치B 브랜치 내용이 합쳐짐

◎ non-fast-forward

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbafuhf%2FbtqMM41667N%2FWtP2E4aqcX5zMyVVvAYyUk%2Fimg.gif

git merge --no-off옵션
브랜치가 생성되었던 기록이 남지 않음
여러 커밋을 하나로 합친 후에 병합 브랜치에 병합하기 대문에 깨끗한 커밋 내역을 유지할 수 있음

◎ 3-ways

일반적으로 가장 많이 사용하는 전략

■ 순서
A 브랜치에서 B 브랜치를 생성한 시점부터,
├ A 브랜치와 B 브랜치 모두 추가 구현을 한 뒤
B 브랜치A 브랜치를 합치면
└ A 브랜치와 B 브랜치가 서로 비교하여 바뀐 것을 정리하여 합치는 전략

브랜치병합하기

병합이란?

A 브랜치에 있는 작업 내용과 B 브랜치의 작업 내용을 합칠 때 사용

브랜치 병합을 하려면 PR을 해야함!

PR이란?

pull request 약어

내용을 가져와 업데이트를 한 뒤, 다시 복제를 해온 브랜치에 내가 변경한 내용을 적용해달라고 요청을 보내는 것

■ pull request 하는 방법

1.깃허브에 들어가 Pull Request 버튼을 누르기

pull request

2.PR message 작성하고, create pull request 버튼 누르기

※ PR 메세지에 작성하는 내용은 매우 중요! 잘 작성하는 것이 좋음

prmessage

3.깃허브가 자동으로 충돌이 일어나는지 확인, 병합하기

pr

4.merge한 브랜치 삭제하기

prsuccess

4-1.merge한 후 깃허브와 깃 동기화하기

4-1-1.브랜치를 삭제한 내역을 내 로컬과 동기화하기

  • git fetch -p

4-1-2.동기화를 하더라도 로컬에 남아있는 브랜치는 별도로 삭제를 해야함

  • git checkout 브랜치명
  • git branch -d 브랜치명

❗ 만약 오류가 발생한다면?

  • 깃허브에서 merge한 내역이 로컬에 동기화가 되지 않았기 때문에 발생하는 것.
  • git pull 명령어를 사용해 커밋 내역도 동기화하기
  • 다시 로컬에서 브랜치 삭제하기
    • git branch -d 브랜치명

Git merge할 때 충돌이 일어난다면?

merge를 할 때 서로 같은 이름 파일을 수정하고 수정한 부분이 겹칠 때, 병합하려고 한다면 충돌이 일어남

1.충돌이 일어난다면 깃허브에서 충돌내용과 충돌을 수정할 수 있는 버튼을 제공해줌 충돌 메세지

2.충돌 내용을 확인하기 충돌내용남기기

3.충돌 내용을 수정하고, Resolve conflicts 버튼을 눌러 충돌 해결하기 충돌내용

브랜치관련 명령어

  • git branch -r: 원격저장소(Github)가 가지고 있는 브랜치 목록
  • git push 깃허브저장소별칭 브랜치명: 특정 브랜치로 커밋 내용을 푸시하기
  • git fetch -p: 깃허브 브랜치 목록과 동기화 하는 명령어
  • git branch -d 브랜치명: 로컬에서 브랜치 삭제하는 명령어

출처 사이트 -https://bbbicb.tistory.com/41

This post is licensed under CC BY 4.0 by the author.