Git에 대해서 공부하다보면, 조금 답답한 것 중 하나가 용어 정리를 해주지를 않는다는 점이다.
그런 것 중 하나가 바로 [ Fast-Forward ]라는 용어다.
이 블로그에 포스팅하고 있는 내용들 모두 마찬가지이지만,
특히 이번 블로그는 절대적으로 개인적인 의견과 함께 개인적으로 정리한 내용이다.
즉, 완전 거짓말일 수 있다는 말이다. 꼭 참고하길 바란다!!! (책임지지 않아요~)
1. 합치자고~
- Git에서 이루어지는 merge 방법은 다음의 세가지 타입이 있다.
▷ 3-way merge
▷ fast-forward merge
▷ cherry-pick
- 명령어로 따지면 다음 3가지 방법이 있다.
▷ merge
▷ rebase
▷ cherry-pick
2. 명령어와 방식의 구분
- 각 명령어와 merge 방식의 관계는 다음과 같다.
merge | rebase | cherry-pick | |
3-way merge | O | X | X |
fast-forward merge | O | O | X |
cherry-pick | X | X | O |
- 즉, merge 명령을 통해서는 상황에 따라 "3-way merge"가 이루어질 수도 있고,
"fast-forward merge"가 이루어질 수도 있다.
- rebase 명령의 경우에는 기본적으로 "fast-forward merge"가 이루어진다.
- cherry-pick 명령은 "cherry-pick"을 위한 명령이다.
3. fast-forward merge
- fast-forward의 본래 뜻은...!? 앞으로 감다!!! 즉, FF 버튼이나 FFWD 버튼이 바로 이것이다.
- fast-forward merge가 이루어지는 경우는 두 가지이다.
▷ merge 상황에서 merge를 하는 branch에서 별도의 commit이 없는 경우
▷ rebase를 수행하는 경우
4. 3-way merge
- 일반적인 merge 상황에서 git은 기본적으로 3-way merge를 수행한다.
- 양쪽 브랜치에 commit이 있는 상황에서 merge를 하면 merge commit과 함께 합쳐지는 것이다.
5. cherry-pick merge
- 특정 commit만을 반영하고 싶은 경우이다.
- 양쪽 브랜치에 commit이 있는 상황에서 merge를 하면 merge commit과 함께 합쳐지는 것이다.
정말 옛날에 작성해놓고 keep 하고 있는 포스팅인데...
자세한 설명은 다음 기회에 하기로 하고... 그냥 발행한다 ^^
(잠자고 있는 포스트 발행하기 프로젝트 중이라서... ㅋㅋ)
'SCM > Git-GitHub' 카테고리의 다른 글
repo (git-repo) : 복수 저장소 다루기 (#1) in Ubuntu (0) | 2019.06.17 |
---|---|
Gerrit : GitHub plugin 빌드 성공하기 (0) | 2017.03.27 |
GitLab in Docker (간편하게 설치하기) (0) | 2016.01.30 |
Git build & install (linuxmint-17-cinnamon-64bit-v2, Git 2.1.2) (0) | 2014.10.26 |
Git build & install (Ubuntu 14.04, Git 2.1.0) (1) | 2014.08.30 |