조금 더 케이스를 상세하게 다시 포스팅 해보았습니다
https://minemanemo.tistory.com/157
사전에 알면 좋은 용어
- fast-forward 관계
현 브랜치 / 병합할 브랜치 |
Fast-Forward 관계 O | Fast-Forward 관계 X |
설명 | Merge 커밋을 남기지 않고 병합 가능하다. 충돌 없이 앞선 커밋을 따라갈 수 있다. 실질적으로 앞선 커밋을 병합하는 느낍보다 따라간다라는 느낌이다. 즉, Fast-Foward 관계란 앞선 커밋을 충돌 없이 따라갈 수 있는 관계를 말한다. (여기서의 충돌은 일반적인 conflict가 아닙니다. 이해를 돕기 위해 충돌 이라고 기술하였음.) |
Merge 커밋을 남겨야 병합 가능하다. Fast-Forward와 반대로 충돌 없이 따라갈 수 없는 관계를 말한다. 병합을 위해 아래와 같이 Merge 커밋을 남겨야한다. |
도식 |
병합(merge)의 종류
1. 보통의 병합 (--ff)
2. 이기적 병합 (--no-ff)
3. 소심한 병합 (--ff-only)
4. 양아치 병합 (--squash)
* 용어는 이해를 돕기위해 제가 만들었어요..ㅎㅎ;;;
보통의 병합
$ git merge {병합할 브랜치 명}
보통의 병합이라고 할지 융통성 있는 병합이라고 할지 고민했는데 기본적인 명령어라서 보통의 병합이라고 하였다.
융통성 있는 병합이라고 표현한 이유는 다음과 같다.
- 현 브랜치와 병합할 브랜치가 Fast-Forward 관계 O: 병할할 브랜치(커밋)을 따라감. without Merge 커밋
- 현 브랜치와 병합할 브랜치가 Fast-Forward 관계 X : 병합할 브랜치와 병합됨. with Merge 커밋
이기적인 병합
$ git merge --no-ff {병합할 브랜치 명}
현재 브랜치와 병합 대상의 관계가 Fast-Forward이던 아니던 무조건 Merge 커밋과 같이 병합되는 옵션
소심한 병합
$ git merge --ff-only {병합할 브랜치 명}
현재 브랜치와 병합 대상의 관계가 Fast-Forward인 경우에만 병합 진행. Merge 커밋 생성되지 않음
양아치 병합
$ git merge --squash {병합할 브랜치 명}
현재 브랜치에 병합 대상과의 차이나는 commit을 하나로 합쳐서 커밋함
'Knowledge > Tools & Command' 카테고리의 다른 글
[VS Code] 터미널 Git Bash 연동 (1) | 2020.01.16 |
---|---|
chef 설치된 환경에서 시스템 정보 전체 확인 명령어 (0) | 2020.01.07 |
[MS] Root Certificate Authority SHA1 인증서 만료 및 SHA256 인증서(cer) 추출 방법 (0) | 2019.11.26 |
gdb 자주 사용하는 명령어 (0) | 2019.07.16 |
가상 머신 소프트웨어 조사 (0) | 2019.07.01 |
댓글