2023. 1. 5. 13:39ㆍgit, 리눅스
프로젝트를 진행하게 되면 사람마다 각자 역할을 맡아서 개발을 진행하게 된다. 지금까지 git을 사용하는 대부분의 경우에 혼자서 개발을 진행한 후 git을 활용했지만 사람들과 같이 개발을 진행하기 위해서는 git merge에 대해 이해가 필요하다고 생각한다.
merge란?
분기 되어 있는 브랜치를 병합하는 것이다.
merge의 종류
1. merge
2. squash and merge
3. rebase and merge
현재 팀프로젝트에서 각자 역할을 맡아 개발을 진행중이라고 가정하자. 내가 개발하고 있는 브랜치명을 my-branch라고 가정했을 때 기존 master에 변화가 없을 경우 다음과 같은 그림일 것이다.

git branch checkout my-branch
만약 내가 my-branch에서 개발을 하고 master에 merge를 하려고 봤는데 다른 팀원이 master에 먼저 merge를 했다면 다음과 같은 그림일 것이다.

위에서 설명한 merge 방법의 과정에 대해서 살펴보자
1. merge

my-branch 브랜치에서 commit을 a, b, c 총 세번을 했다. a, b, c가 m으로 master에 추가되는 방식으로 진행된다.
m은 두개의 parent를 갖게된다.
git checkout master
git merge my-branch
2. squash and merge

my-branch에서 커밋한 a, b, c를 합쳐서 abc가 master에 추가된다. 여기서 abc는 하나의 parent를 갖게 된다.
주로 feature branch의 commit history를 간단하게 만들어주기 위해 사용된다.
git checkout master
git merge --squash my-branch
git commit -m "commit message"
3. rebase and merge

my-branch에서 한 모든 commit을 master 브랜치에 추가가 된다. rebase and merge를 하게 되면 merge를 한 기록이 없어지므로 하나의 브랜치에서 작업한 거처럼 보인다.
git checkout my branch
git rebase master
git checkout master
git merge my-branch
reference: https://im-developer.tistory.com/182
'git, 리눅스' 카테고리의 다른 글
| 지옥에서 온 git 정리 (chapter3 ~ chapter5) (0) | 2024.06.16 |
|---|---|
| Disconnected from 20.200.245.247 port 22 fatal: Could not read from remote repository. (0) | 2023.07.28 |
| sourcetree 실행이 안되는 오류 (0) | 2023.07.08 |
| 깃허브 private 레포지토리 clone이 안되는 경우 해결 방법 (0) | 2023.06.29 |
| git blog 만들기 (0) | 2023.05.12 |