25.10.26 개발일지 / Git 병합(pull/merge)

2025. 11. 13. 18:06·LMS 7/개발일지

병합

병합(merge)는 두 곳에서 나타날 수 있다.

1. merge

> 해당 HEAD가 있는 A_branch를 다른 B_branch에 merge하는 경우

2. pull

> pull은 두 동작으로 구성된다.

fetch + merge

1) fetch는 커밋 정보를 불러오고,

2) merge는 위처럼 병합한다.

> 결국 pull은 merge를 포함하는 것


병합의 종류

1. 빨리감기(Fast-forward)

> 한 쪽의 변경(main은 변경 X, branch만 변경 O)만 존재하여 분기점 이후 새 커밋이 없어 포인터를 최신상태로 옮기면 되는 경우

​

(main) : A --- B

\

(feature) : C --- D

​

▼: git merge feature

​

(main, feature) A --- B --- C --- D

​2. 병합(Merge)

> 양쪽 브랜치 모두 변경(branch에서 변경 -> main에서도 추가 변경)하는 경우

(main) : A --- B --- C

\

(feature) : D --- E

​

▼: git merge feature

​

(main) : A --- B --- C ------- F

\ /

(feature) : D --- E -------

​

: 새로운 병합 커밋(F)를 생성하게 됨.

2.1 병합결과

1) 자동병합

> 충돌되는 부분이 없는 경우 자동병합을 한다.

2) 병합충돌

> 충돌되는 부분이 있다면 병합충돌이 일어난다.


병합충돌(Merge Conflict)

> 병합충돌이란 위의 병합(Merge)과정에서 같은 파일이나 같은 폴더에 대해 서로 다른 수정을 했을 때 Git 내부적으로 병합을 멈추고, 병합 내용을 표시한 임시 결과물을 생성해주는 과정을 말함

 

1. Working Tree

: 우리가 실제로 보는 파일 및 폴더 상태를 말함

1) 일반적인 경우

> HEAD를 기준으로 보여줌(일반적인 상태)

2) 병합상태인 경우

> 임시 결과물을 바탕으로 보여줌(병합충돌이 발생한 부분이 반영된 임시 상태)

2. 병합충돌의 경우와 해결방법

1) main과 branch에서 같은 파일의 같은 줄을 수정한 경우

> 이 경우 즉시 병합을 중지한다.

▼ Working Tree는 아래와 같이 충돌 부분을 표시하게 된다.

<<<<<<< HEAD
(main의 내용)
=======
(branch의 내용)
>>>>>>> branch

1.1) 해결방법

▼ 위의 내용을 아래처럼 수정

modified main && branch

> commit && push를 하면 병합 충돌은 해결된다.(하나의 예)

 

2) main에서는 삭제한 파일을 branch에서 수정한 경우(반대의 경우도 같음)

> 이 경우도 즉시 병합을 중지한다.

> Woring Tree는 수정된 파일을 다시 생성한 임시 상태를 표시하게 된다.

 

2.2) 해결방법

> 사용자는 수정한 파일을 그대로 둘 것인지, 삭제할 것인지 선택하여, commit && push를 하면 병합충돌은 해결된다

3. 결론

병합충돌과 해결과정은 총 세 단계로 이루어진다.

​

첫째. Git이 병합을 멈추고, 충돌이 나는 부분을 임시로 보여준다.

둘째. 충돌이 나는 부분을 확인하고, 선택에 따라 변경한다.

셋째. 변경한 부분을 수동으로 commit && push 한다.

'LMS 7 > 개발일지' 카테고리의 다른 글

25.10.28 개발일지 MFC 프로젝트 3일차(Pylon, openCV)  (0) 2025.11.13
25.10.27 개발일지 / C++ MFC 프로젝트 2일차  (0) 2025.11.13
25.10.24 개발일지 / MFC 프로젝트 1일차  (0) 2025.11.13
25.10.22 개발일지 / (주)그림  (0) 2025.11.13
25.10.21 개발일지  (0) 2025.11.13
'LMS 7/개발일지' 카테고리의 다른 글
  • 25.10.28 개발일지 MFC 프로젝트 3일차(Pylon, openCV)
  • 25.10.27 개발일지 / C++ MFC 프로젝트 2일차
  • 25.10.24 개발일지 / MFC 프로젝트 1일차
  • 25.10.22 개발일지 / (주)그림
m_Dev
m_Dev
  • m_Dev
    m_Dev
    m_Dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • MAIN STUDY
        • 정보보안
        • 빅데이터
        • 정보처리
        • 컴퓨터 구조
        • 기타
      • JOB
        • Study
        • Project
      • LMS 7
        • 개발일지
      • FRAMEWORK
        • Qt
        • MFC
        • Winform
        • WPF
        • MAUI
      • NETWORK
        • Study
        • Assignment
      • PYTHON
        • Set
        • Study
        • Assignment
        • Project
      • C
        • Set
        • Study
        • Assignment
        • Project
      • C++
        • Set
        • Study
        • Assignment
        • Project
      • C#
        • Set
        • Study
        • Assignment
        • Project
      • DATABASE
        • MySQL
        • SQLite
      • IDE
        • VisualStudioCode
        • VisualStudio
        • Pycharm
        • Colab
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
m_Dev
25.10.26 개발일지 / Git 병합(pull/merge)
상단으로

티스토리툴바