tgool
Tgool
tgool
전체 방문자
오늘
어제
  • 분류 전체보기
    • Data Science
      • AI
      • Data Mining
      • ML(Machine Learning)
    • Computer Science
      • 자료구조
      • 알고리즘
      • 시스템 프로그래밍
      • 운영체제
      • 컴퓨터 구조
      • 컴퓨터 네트워크
      • 데이터 베이스
      • 파이썬
      • 자바
      • 아두이노
    • Math
      • 통계학
      • 확률론
      • 선형대수학
      • 수리통계학
      • 회귀분석
    • TOFEL
    • Git
    • Plan
    • Book
    • Working out
      • 영양과 생활
      • 운동 정보
      • 운동 기록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
tgool

Tgool

[Git] 병합(merge)
Git

[Git] 병합(merge)

2023. 3. 10. 23:27

병합이란?

  • 하나의 브랜치를 현재 브랜치와 합치는 것을 병합(merge)라고 한다.
  • 현재 브랜치는 헤드(HEAD) 브랜치라고 한다.
  • 예를 들어 헤드 브랜치가 main 이고 여기서 version2 브랜치를 병합하면 version2의 내용이 main에 반영되게 된다.
  • 병합시 자주 발생하는 상황에 대해 알아보도록 하자.

상황1: 헤드 브랜치에 변경 사항이 없을 경우

가장 쉬운 상황

가장 행복한 상황이다. 이 상황은

  1. 합치려는 브랜치가 헤드 브랜치로부터 시작되었다.
  2. 그 사이 헤드 브랜치에는 전혀 갱신이 없었다.

주로 혼자 작업을 할 때 발생하는 상황이다.

  • 위 그림은 헤드 브랜치(*이 붙어 있는)인 master에서 version2가 시작되고 두 번 커밋(C1, C2)한 상태이다.
  • 여기서 병합을 하면 단순하게 master 브랜치가 가르키는 커밋이 version2의 커밋(C4)으로 이동한다. 

  • 이런 상황을 fast-forward 라고 합니다.
  • 단순히 브랜치의 참조만 갱신되는 상황이다.

상황2: 가지가 생겨난 경우

  • 두 번째 경우는 상황이 조금 복잡해 졌다. 원인은 몇 가지가 있다.
  1. 과거의 커밋으로부터 브랜치를 생성해서 작업을 한 경우
  2. 새로운 브랜치 작업 이후에 헤드에 다른 새 커밋이 있는 경우
  3. 여러 브랜치를 동시에 작업하면서 병합을 시도할 경우
  • 세 경우 모두 종종 발생하는 상황이다.  이 경우에도 기본이 되는 헤드 브랜치에서 타겟 브랜치를 병합하면 되긴 하는데, 이 때 여러 브랜치에서 동시에 변경한 파일이 있을 경우 충돌이 발생할 수 있다.

  • 충돌이 생기면 에러 메시지 같은게 나오기 때문에 초보는 큰 충격에 빠지는 데 당연한 일이므로 걱정할 필요가 없다.
  • 혼자 작업하는 경우에는 충돌 해결도 쉬운 편이다.
  1. 보통 가장 최신 내용 하나만 선택하면 되는 경우가 많다.
  2. 그리고 최신 내용은 보통 타겟 브랜치에 있는 경우가 많다.
  3. 여러 파일에 변경 사항이 혼재해 있는 경우도 내가 개발했으므로 크게 어렵지 않다.
  • 소스트리와 에디터를 사용하면 어렵지 않게 충돌 해결이 가능하므로 겁먹지 말자!
  • 운 좋게 충돌이 생기지 않았거나, 잘 해결했다면 아래와 같은 모양이 된다.

  • 아래 사이트에서 깃 브랜치 사용 연습해보자

https://learngitbranching.js.org/

 

Learn Git Branching

An interactive Git visualization tool to educate and challenge!

learngitbranching.js.org


소스트리로 병합(merge)하기

 

상황1: 헤드 브랜치에 변경 사항이 없을 경우

- Version3라는 브랜치 새로 생성

- version3 브랜치에 체크아웃 후 파일을 수정해준다.

- 수정된 내용을 저장 후 커밋까지 완료해준다. 

병합 버튼 클릭

- fast forward 성공

 

상황2: 가지가 생겨난 경우

- version2가 수정되었을 때, main(master) 브랜치에서 병합하기 버튼을 클릭해준다. 

- 충돌이 발생하였다. 겁내지 말자.

- 에디터로 들어가보면 해당 오류 사항이 뜬다. 여기서 Accept Both Changes를 누르거나 수동으로 수정해준다.

- 수정된 내용을 저장 후 커밋해준다.

- 충돌 사항이 해결되었다!

- 깃헙에 푸쉬해준다.

 

## 병합해서 충돌이 안 나려면?

- 보통 다른 파일에서 작업을 하면 충돌이 안난다.
 
## 기본적으로 같은 파일을 수정하면 충돌이 일어난다.

'Git' 카테고리의 다른 글

[Git] reset으로 커밋 되돌리기(Sourcetree)  (0) 2023.03.13
[Git] 충돌 해결하기  (0) 2023.03.13
[Git] 브랜치의 개념 및 체크아웃 이용 방법  (0) 2023.03.10
[Git] 깃 checkout을 소스 트리를 이용해 변경 내용 취소하기  (0) 2023.03.10
[Git] 소스 트리 업로드하기(push)  (0) 2023.03.10
    'Git' 카테고리의 다른 글
    • [Git] reset으로 커밋 되돌리기(Sourcetree)
    • [Git] 충돌 해결하기
    • [Git] 브랜치의 개념 및 체크아웃 이용 방법
    • [Git] 깃 checkout을 소스 트리를 이용해 변경 내용 취소하기
    tgool
    tgool

    티스토리툴바