기타

Git 특강 - branch 와 merge(Local)

서영환 2024. 8. 16. 20:25

branch

  • 특정 커밋을 가리키는 포인터

 

  • 위의 사진에 서 보는 것처럼 어떠한 메인을 기준으로(정상 동작 되는 코드 상태) 추가로 기능을 구현할 때 메인에 영향을 주지않고 새로운 브랜치를 생성하여 해당 프로젝트의 기능을 구현을 진행 할 수 있게 하는 git의 기능이다
  • feature-A와 feature-B, master는 C4의 코드까지는 동일하나 이후 생성되는 커밋들(코드&파일생성&삭제 등등의 변화 상태를 기록한)은  merget(병합)을 하기 까지는 독립적이다
  • 이러한 branch의 생성은
    • git switch -c name
  • 으로 생성 가능 하며 git branch -m name 명령어를 제외하고는 생성 후 이동 된다

merge

  • 기능의 구현이 끝난 branch를 나누어졌던 상위 branch에 합침
  • 즉 위의 사진으로는 feature-A 혹은 feature-B의 기능이 완료 되었다면 master에 합칠 필요가 있다 이때 완성된 기능을 master에 합치는 것으로 branch의 위치는 master여야 한다
  • master가 변경됨이 없는 상태에서 merge를 하게 된다면 master는 변경된 이력이 없기에 현재 가리키는 위치를 merge된 위치를 가르키게 하면 끝난다(Fast- Forward Merge)
  • 그러나 master가 변경이 된 상태에 merge를 하게 될 경우 충돌이 발생 할 수 있다. merge시 충돌이 발생 할 시 오류가 발생하는게 아닌 merge가 되는 도중에 멈추게 되는데 이때 멈추어 진 상태에서 충돌을 개발자가 해결해 주어야 하는데 이때 merge commit이 생성되고 해결 후 merge commit 위치를 master가 가르키게 된다(3-way Merge)

  • merge를 사용하는 방법은
    • git merge branch_name(Ex)feature-A)   <--- 이때 branch는 master여야 한다

 

 

Commit을 할때 아래의 형식으로 해두면 좋아요

type: subject

body

 

  • type
    • feature or feat - 새로운 기능 추가
    • bugfix or fix - 버그 수정
    • docs - 문서 수정
    • style - 코드 포맷팅, 콜론 누락 …
    • refactor or refac - 코드 리펙토링 (로직 수정 없음)
    • test - 테스트 코드
    • comment - 주석 수정
    • remove - 파일/디렉토리 삭제
    • rename - 파일/디레토리 이름 수정
  • git commit 만 입력할 시 여러줄을 입력가능한 shell 편집기로 들어가게 되는데 이때 'i'키를 이용하여 입력이 가능하며 이후 입력이 완료가 되었다면 'ESC'키를 이용하여 편집을 종료후 ':wq'로 저장후 종료하면 된다