[위클리페이퍼] git branch merge 방법과 특징

nali kang·2024년 1월 14일
0

위클리페이퍼

목록 보기
4/13
post-thumbnail

Merge

git을 이용해서 작업하다보면 별도의 branch를 생성하고 작업을 진행한다. 개개인의 기능적인 테스트를 위함도 있지만, 다수와 작업을 진행할때는 conflict를 피하고 개인적인 history를 commit으로 남겨 작업 진행에 용이함을 이용할 수 있는 장점이 있기 때문이다.

branch에서 작업이 끝난 후 branch에서 추가한 기능이나 작업물은 main격의 branch에 통합하여야 하는데 이때 merge를 사용한다.

merge 하는 방법

단순히 내가만든 branch(A branch라 하겠다.)를 main branch에 merge해서 통합하면 좋겠지만, 그렇지 못한 상황이 발생할 수 있다. branch를 생성할때 기준격인 base commit이 main의 최신 commit일 경우 문제 없지만, 다수와 작업을 진행하다보면 나보다 먼저 merge된 branch가 있거나 따로 main에 작업된 commit이 존재한다면 다른 방법이나 방식으로 우회가 필요할 수 있다.

merge할 때 사용하는 방법에 대해 알아보자

1. Fast-Forward 설정

  • merge의 기본 설정으로 일반적인 merge를 의미한다.
  • A branch가 분기 이후 커밋된 내용이 없는 경우(base commit이 최신인 경우) A branch를 병합하고 해당 branch의 commit을 이어 붙여 history를 남긴다.

2. Squash and merge

  • A branch에 있는 커밋을 모두 합쳐(Squash) 하나의 새로운 commit을 만든다. 그 후 그 commit을 병합한다.
  • A branch에서 사용한 commit들을 하나의 의미있는 commit으로 합치기 때문에 history를 남기기 위해선 정리가 필요하다.
  • 남아있는 정보량이 적어지기 때문에 언제 어떤 코드를 변경했는지에 대한 정보를 잃을 수 있다.

3. Rebase and merge

  • A branch가 분기했던 base commit이 최신이 아닐 경우 최신 commit으로 base를 강제 이동하고 merge를 진행하는 방법이다.
  • base가 변경되기 때문에 commit의 history 자체가 변경될 수 있고 해당 이력을 잃을 수 있기 때문에 (commit에 대한 history가 필요한 경우) 무분별하게 사용하지 않는것이 좋다.

위와같이 3가지의 방법을 알아봤는데 branch를 생성해 작업하는 것도 좋지만 해당 branch를 어떤 전략으로 merge하는지에 따라 history관리나 git flow에 대한 가독성 또한 달라지기 때문에 잘 선택하는 것이 중요할 것이라 생각한다.

profile
안녕하세요 강나리입니다.

0개의 댓글

관련 채용 정보