Git

[Git] branch 와 merge

죵욜이 2024. 12. 21. 21:38

Branch(브랜치) 란?

  • 특정 커밋을 가리키는 포인터 라고 생각하면 된다.

SW를 개발할 때, 깃의 브랜치기능을 활용한다면 같은 팀끼리 작업 프로젝트를 공유하고 같이 작업할 수 있도록 해준다.

또 혼자서 작업하더라도 여러 버전을 만들어 놓을 때, 또는 본 작업에서는 시도하기 힘든 테스트를 할 때 바로 이 "브랜치"라는 것이 굉장히 유용하게 된다.

 

 

 

동시에 다양한 작업을 할 수 있게 만들어 주는 기능 "브랜치(Branch)"를 이용하면 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경할 수 있다.

 

브래치는 독립적으로 어떤 작업을 진행하기 위한 개념으로,

필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에 여러 작업을 동시에 진행할 수 있게 된다.

 

만일 브랜치가 없다면 작업을 모두 수행 후 다른 작업자에게 넘겨줘야 한다.

 

 

 

 

하지만 브랜치 기능을 활용한다면 하나의 작업을 여러 시점에서 개발할 수 있게된다..

 


브랜치 생성, 이동

$ git switch <브랜치명>
  • 브랜치를 이동하고 싶을때 사용하는 명령어

만약 생성을 하고싶다면 

$ git switch -c <브랜치명>
  • create 옵션으로 -c 를 추가하면 된다

Merege 란?

  • 하나의 브랜치에서 작업한 내용을 다른 브랜치에 통합하는 과정
$ git merge <병합할 브랜치>
  • 현재 내가있는 브랜치에 <병합할 브랜치> 를 병합한다
  • 현재브랜치 <- 병합할브랜치
  • 항상 merge 전 git switch 을 통해 원하는 브랜치로 이동해야함!

 

merge 의 방식중 2가지를 살펴보면

  1. Fast-forward Merge
    • 브랜치가 완전히 병렬로 작업된 경우
    • 브랜치가 직선으로 이어지며 병합커밋이 생성되지 않는다.
  2. 3-way Merge
    • 서로 다른 브랜치에서 변경된 내용이 있을 경우
    • 병합커밋을 생성하며 merge 함

 

 

merge를 하던중 충돌(Conflict) 이 일어날 수 있습니다.

 

해결방법으로는

  1. Git이 표시한 충돌 부분을 확인합니다.
    • 충돌된 파일에 <<<<<<<, =======, >>>>>>> 구분선이 생깁니다.
  2. 수동으로 수정한 후 저장합니다.
    • 필요한 코드만 남기거나, 둘 다 필요한 경우 병합합니다.
  3. 수정한 파일을 스테이징 합니다
    • git add
  4. 병합커밋을 생성합니다
    • git commit