본문 바로가기
Days/IT

git 병합하기 (merge)

by TIS_Ha 2024. 2. 26.
반응형

병합(merge) : 하나의 브랜치를 현재 브랜치(HEAD 브랜치)와 합치는 것.

병합 시 자주 발생하는 상황을 Learn Git Branching 앱을 통해 테스트해보자.

https://learngitbranching.js.org/?locale=ko


Case1. 헤드 브랜치에 변경사항이 없는 경우(fast-foward)

  1. 합치려고 하는 브랜치(version2)가 헤드 브랜치로부터 시작되며,
  2. version2 브랜치가 변경되는동안, 헤드 브랜치에는 전혀 갱신이 없는 경우.

  • main 브랜치 -> version2 브랜치 생성 ( * 이 붙어있는 브랜치는 현재 작업중인 브랜치라는 의미. )
  • version2 브랜치에서 코드 수정 후 commit

  • main 브랜치를 현재 브랜치로 설정 후 version2브랜치를 병합 (# git merge version2)
  • version2 브랜치의 수정사항이 main 브랜치에 적용된다.

Case2. 가지가 생겨난 경우 

  1. 과거의 커밋으로부터 브랜치를 생성해서 작업한 경우.
  2. 새로운 브랜치 작업 이후에 헤드에 다른 새 커밋이 있는 경우.
  3. 여러 브랜치를 동시에 작업하면서 병합을 시도할 경우.

위와 같이 version2, version3 브랜치를 생성한 후, main 브랜치로 순차적으로 merge한다고 해보자.

이 경우에도 기본이 되는 헤드 브랜치에서 타겟 브랜치를 병합하면 되지만, 이 때 여러 브랜치에서 동시에 변경한 파일이 있을 경우 충돌이 발생할 수 있다. 


충돌 시 해결방법

1. 에디터를 이용한 해결 :

- 에디터로 충돌파일을 열면, 각 브랜치별로 수정한 사항을 확인할 수 있다.

  충돌이 발생된 부분을 직접 수정한 후 다시 add, commit 후 merge한다.

2. SourceTree를 이용한 해결 :

- [브랜치]-[커밋하지않은 변경사항]에 충돌파일은 ! 느낌표로 표시된다.

  해당 파일 마우스 우클릭 - [충돌해결] - '내것/저장소것'을 이용하여 충돌해결.

3. 병합툴을 이용한 해결

 

충돌을 해결했는데 코드 내용이 이상하다면, reset을 통해 이전 커밋으로 되돌릴 수 있다.

 

반응형

'Days > IT' 카테고리의 다른 글

git 이전 커밋으로 되돌리기  (0) 2024.02.26
깃헙 소스트리 사용해보기  (0) 2024.02.23
DNS  (1) 2023.12.20
파이썬 웹 프레임워크(Flask, Django, FastAPI)  (1) 2023.12.05
GET / POST  (1) 2023.12.04

댓글