반응형
병합(merge) : 하나의 브랜치를 현재 브랜치(HEAD 브랜치)와 합치는 것.
병합 시 자주 발생하는 상황을 Learn Git Branching 앱을 통해 테스트해보자.
https://learngitbranching.js.org/?locale=ko
Case1. 헤드 브랜치에 변경사항이 없는 경우(fast-foward)
- 합치려고 하는 브랜치(version2)가 헤드 브랜치로부터 시작되며,
- version2 브랜치가 변경되는동안, 헤드 브랜치에는 전혀 갱신이 없는 경우.
- main 브랜치 -> version2 브랜치 생성 ( * 이 붙어있는 브랜치는 현재 작업중인 브랜치라는 의미. )
- version2 브랜치에서 코드 수정 후 commit
- main 브랜치를 현재 브랜치로 설정 후 version2브랜치를 병합 (# git merge version2)
- version2 브랜치의 수정사항이 main 브랜치에 적용된다.
Case2. 가지가 생겨난 경우
- 과거의 커밋으로부터 브랜치를 생성해서 작업한 경우.
- 새로운 브랜치 작업 이후에 헤드에 다른 새 커밋이 있는 경우.
- 여러 브랜치를 동시에 작업하면서 병합을 시도할 경우.
위와 같이 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 |
댓글