Appia의 IT세상

[깃, Git]Git Merge란? (Feat. Fast-Forward Merge) 본문

IT_OS_ETC../[OS]Windows10&11

[깃, Git]Git Merge란? (Feat. Fast-Forward Merge)

Appia 2023. 11. 22. 07:20
반응형

[깃, Git]Git Merge란? (Feat. Fast-Forwarding Merge)

[깃, Git]Git Merge란? (Feat. Fast-Forwarding Merge)

 

앞선 포스팅들에서는 git branch(깃 브랜치)에 대해서 살펴봤습니다. 의미아, 보기, 생성하기, 삭제하기등을 여러 포스팅에 걸쳐서 이야기를 해봤습니다. 이번 포스팅에 앞선 포스팅에 이어서, Merge에 대해서 이야기를 해보고자 합니다. 물론, 이 Merge 또한 브랜치 기준으로 이루어집니다.

 

[깃, Git] git branch(깃 브랜치)와 HEAD(헤드)란?

 

[깃, Git] git branch(깃 브랜치)와 HEAD(헤드)란?

[깃, Git] git branch(깃 브랜치)와 HEAD(헤드)란? 이전 포스팅까지는 매우 기본적인 내용들인 Git Commit에 관련된 내용들과 그에 추가된 GUI 및 환경설정을 하는 부분에 집중적으로 다루었습니다. 앞선

appia.tistory.com

 

이전 포스팅에서, git branch(깃 브랜치)에 대해서 설명을 진행하면서, 여러 사람들이 동시에 병렬적으로 작업을 해야 하는 경우가 있을 수 있다고 이야기를 하였습니다. 이러한 부분들이 결론적으로 한 개의 git branch(브랜치)로 통합이 되어야 합니다. 그래서, 각 2개를 한 개로 합치는 과정을 Mege라고 합니다.

Git Merge Workflow

 

그럼 위의 workflow을 기준으로 간단히 다시 풀어서 이야기를 해보면, 위에서 보이는 그림에는 총 2가지 branch(브랜치)가 존재합니다. 여기에서, A지점에서 우리는 동시 작업을 하기 위해서, 빨간색 branch(브랜치)를 생성하였고, 여러 작업을 하면서 2번의 commit을 진행하였습니다. 그리고 나서, 이 부분을 기존 master branch(브랜치) merge를 진행합니다.

 

그럼 여기에서, Merge를 이야기할 때 주의해야할 점 2가지에 대해서 이야기를 하겠습니다.

  1. 특정 커밋이 아니라, 브랜치 병합
  2. 현재 HEAD브랜치에 병합함  즉,  HEAD가 가르키는 위치에 Merge 

 그러면, Mege하는 방법에 대해서 간단히 살펴보겠습니다. 먼저, 예를 들면, master에 Merge하고자 한다. 

git switch master 
git merge [병합하고자 하는 브랜치 이름]

 

그럼 간단한 예시로 다음과 같은 방법으로 진행을 해보고자 합니다. 일단, 특정 시점에서, commit(8531a3)기준으로 브랜치를 하나 생성합니다. external이라는 이름으로 branch(브랜치)를 생성을 합니다. 그리고 external 브랜치에서 파일을 하나 생성하고, commit을 진행합니다. 그리고, 추가로 파일 commit을 하나 더 시킵니다. 

external이라는 브랜치에 파일 commit
external이라는 브랜치에 파일 commit2

위의 과정을 진행하고 git log를 통해서, 현재 commit의 상태를 보면 다음과 같은 형태인 것을 알 수 있습니다.

git log의 결과

이 부분을 바탕으로 현재 도형으로 도식화 해서 보면 다음과 같습니다. 

git log의 결과의 도식화

그럼 위의 부분을 master(녹색)를 바탕으로 external(빨간) branch(브랜치)를 merge할 경우에는 어떨까요? 그럼 일단, git bash 기준으로 보겠습니다. 하기 명령어를 통해서, Merge를 진행하도록 하겠습니다. 

git switch master
git merge external

git merge 결과

이 부분을 바탕으로 git log를 결과를 보면, head 부분이 바뀐 것을 알 수 있습니다. 

git merge 결과

그러면 이 부분을 도식화 해서 다시 보겠습니다. 일단, 이와 같은 구조에서는 보다 조금 더 쉽게 설명하기 위해서, branch(브랜치)에 색깔뿐 아니라 이름까지 명시하였습니다. Merge 이전에는 다음과 같은 구조 입니다. 

Merge 이전

Merge이후에는 다음과 같이 변경이 됩니다.  

Merge 이후

구조가 달라지지 않지만, master가 가리키는 commit만 변경이 됩니다. 별다른 추가 작업은 진행이 되지 않습니다. 이럴 경우에 Fast-Forward Merge라고도 합니다. 다른 작업 병합없이 commit 직접을 따라잡기 하여 병합하는 것입니다. 

 

[깃, Git] Git의 commit 정보 확인하기 (feat. git log)

 

[깃, Git] Git의 commit 정보 확인하기 (feat. git log)

[깃, Git] Git의 commit 정보 확인하기 (feat. git log) 이전 포스팅에서, git의 기본 편집기을 변경하는 방법에 대해서 대해서 알아봤습니다. 이전 부분을 통해서 commit 메시지가 길거나, 많은 내용을 담아

appia.tistory.com

 

이번 포스팅에서는 [깃, Git]Git Merge란? (Feat. Fast-Forward Merge)라는 주제로 포스팅을 해봤습니다. 생각 보다 Merge가 간단하게 보이지만, 실제로는 많은 이슈들이 있습니다. 이번 포스팅에서는 간단히 Merge 하는 방법과 개념에 대해서 살펴보시고, 다음 포스팅에서는 다양한 Merge시에 문제점에 대해서 살펴보겠습니다. 

반응형
Comments