본문 바로가기
utils/git and github

[Git] merge: branch를 합침

by ds31x 2024. 5. 26.

git merge

 

merge는 두 개 이상의 브랜치를 병합하는 데 사용되는 Git 명령어

 

각각의 branch에서 작업을 수행하고 각 작업이 완료가 되면 해당 작업들을 마무리하고 기존 branch와의 merge를 수행하게 됨.

  • 보통 feature 브랜치를 main 브랜치에 병합하거나
  • 여러 개발자들이 각자 작업한 내용을 하나의 브랜치로 합치는 데 사용됨.

git에서 브랜치를 합치는 방법은 크게 다음과 같이 3가지 모드가 있으며, 이중 Fast-Forward Merge와 3-Way Merge가 git merge명령어에서 사용가능하며, Rebase는 git rebase 명령어로 수행됨.

  • Fast-Forward Merge
  • 3-Way Merge
  • Rebase

2024.05.26 - [utils/git and github] - [Git] merge mode: merge and rebase.

 

[Git] merge mode: merge and rebase.

Git Merge MethodsGit은 branch를 기반으로 병합을 수행함.대표적인 병합 방식으로는 Fast-Forward Merge, 3-Way Merge, Rebase가 있음.1. Fast-Forward MergeFast-Forward Merge는 순차적인 commit에 맞춰 병합하는 방식임.한 사

ds31x.tistory.com

 


Git Merge 사용법

1.병합할 브랜치로 이동하기

병합할 대상 브랜치로 변경.

예를 들어, feature 브랜치를 main 브랜치로 병합하려면 main 브랜치로 변경.

git switch main

2023.12.31 - [utils/git and github] - [git] switch : branch 전환

 

[git] switch : branch 전환

git switch 는 Git 2.23 버전에서 도입. branch 전환 과 working tree 를 최근 commit 상태 로 돌리는 등의 다양한 기능을 수행하던 git checkout 을 git switch 와 git restore 로 분리하면서 등장함. git switch는 branch를

ds31x.tistory.com

 


2.merge 명령어 실행

병합할 브랜치(feature)를 지정하여 merge(병합).

git merge feature

3.conflict 해결 (필요한 경우)

merging 도중 conflict이 발생할 경우 충돌 파일을 수정하고나서
다음 명령어로 수정된 file (<resolved-files>)으로 commit.

git add <resolved-files>
git commit
  • 같은 file의 같은 위치를 다르게 수정한 경우, 자동으로 merging이 불가능.
  • 이 경우 conflict가 발생.
  • 충돌이 일어나는 파일을 열어서 충돌을 확인하고 수정해야 함.

4.merge 완료

merging이 완료되면 병합된 브랜치를 삭제할 수 있음 (option).

git branch -d feature
  • 지우는 게 아닌 숨긴다고 표현하는 게 맞음.
  • 이후 다시 같은 이름의 branch 를 생성시 예전 내용을 볼 수 있기 때문임.

참고

  • -d 는 stage가 깨끗하게 처리된 상태(working tree에 작업한 기록이 없고, add 명령으로 stage에 commit할 것들이 없는 상태)여야 삭제가 됨.
  • 또한 최신 commit이 연결된 remote repository의 branch보다 최신일 경우에도 삭제가 되지 않음.← 이경우 push를 해주면 삭제가 가능해짐.
  • 즉, 최신 변경 사항이 있어서 아직 Merge가 필요한 경우에는 삭제가 되지 않음. ← 이경우, -D 옵션을 사용하면 강제로 삭제함.
  • 삭제는 현재 branch는 제거할 수 없음. 다른 branch로 switch한 다음 제거해야 함.

Git Merge Tutorial

여기서 소개할 튜토리얼은 Atlassian의 Git Merge 튜토리얼을 기반으로 한 것임.

 

여러 브랜치에서 git log는 다음을 사용하길 권함.

git log --oneline --branches --graph
  • --oneline : commit 당 로그를 한줄 씩
  • --branches : 각 branch의 로그를 출력.
  • --graph : 그래프 형태로 출력.

브랜치 간의 차이점은 다음의 명령어로 확인.

git log <기준branch>..<대상branch>

2023.12.31 - [utils/git and github] - [Git] log: commit history 살펴보기

 

[Git] log: commit history 살펴보기

log : commit history 살펴보기git log 는 git 으로 관리되는 프로젝트의 commit history 를 보여주는 명령어.누가 언제 어떻게 프로젝트에 변경이 이루어졌는지, 브랜치간의 관계, commit id 등을 확인할 수

ds31x.tistory.com

 


1. 튜토리얼 준비

Git을 설치하고 local repository로 사용할 디렉토리에서 repository생성.

GitHub 또는 GitLab과 같은 원격 저장소를 연결할 수도 있음( #으로 시작하는 line에 해당): option

git init
# git remote add origin <remote-repository-URL>

2. 새로운 브랜치 생성 및 작업

1.main 브랜치에서 새로운 브랜치를 생성.

git switch -c feature-branch

2.새로운 브랜치에서 작업을 진행하고 커밋.

echo "Feature work" > feature.txt
git add feature.txt
git commit -m "Add feature work"

3. main 브랜치로 병합

1.main 브랜치로 변경.

git switch main

2.feature-branch를 main 브랜치에 병합.

git merge feature-branch

3.병합이 성공적으로 완료되었는지 확인합니다.

git log --oneline

4.병합된 브랜치를 삭제 (option).

git branch -d feature-branch

4. 충돌 해결

충돌이 발생한 경우, 다음 단계를 따릅니다:

 

1.충돌 파일을 열고 수정.

2.수정된 파일을 add (staging).

git add <resolved-files>

3.병합을 완료.

git commit

같이 보면 좋은 자료

2024.05.20 - [utils/git and github] - [Git] Git Summary (작성중)

 

[Git] Git Summary (작성중)

git이란2024.05.20 - [utils/git and github] - Git : 소개 git 설치 후 해줘야 하는 작업들[Git] git 설치 후 우선 해줘야 하는 작업들 (tistory.com)local repository 초기화2024.05.20 - [utils/git and github] - [Git] init : local rep

ds31x.tistory.com

2023.12.30 - [utils/git and github] - [git] branch : branch를 생성하거나 확인 또는 삭제 및 변경

 

[git] branch : branch를 생성하거나 확인 또는 삭제 및 변경

branch : Branch를 생성하거나 확인하는 명령. branch 확인 아래와 같이 인자 없이 수행할 경우, 현재 존재하는 branch들을 보여줌. 기본적으로 main (과거엔 master) 라는 branch가 존재함. *표시는 현재 작업

ds31x.tistory.com