티스토리 뷰
지난 번에 git flow release finish 에 대한 글을 썼었는데
회사에서 git flow에 대해 이야기를 하다가 그래서 back merge가 뭐지?하는 의문이 들었다
back merge에 대해 명확하게 정의한 것은 찾지 못했고
검색해 봤을 때 stack overflow에서 누군가 올린 질문글을 찾았는데
여기 답변 + 여기저기 물어보고 다녀보니 이제 좀 알거 같아서 정리해 본다
(내가 이해한게 틀릴 수 있다)
It just means to do a merge, like any other, but in a direction that is "backwards" compared to the normal flow of the branching conventions. If you visualize branches arranged like |
normal한 flow의 반대방향으로 merge하는걸 back merge라고 생각하니 간단(?)해졌다
normal flow가 뭘까 싶을텐데
git flow에서 브랜치의 배열이 master-hotfix-release-develop-feature 순서인데
master 브랜치를 기준으로 확장이 필요할 때마다 위의 그림상 왼쪽에서 오른쪽으로 가지치듯 branch가 생성되고
확장된 branch에서 merge될 때는 오른쪽에서 왼쪽으로 merge 되는 것을 normal flow라고 할 수 있겠다
그래서 normal flow에서 반대로 왼쪽에서 오른쪽으로 merge되는 것이 back merge라고 할 수 있다!
그렇지만 저 답변에서 back merge에 대한 정의는
"The use of the term "back merge" is usually somewhat arbitrary."라고 했는데
merge 시점마다 back merge가 어느 방향인지는 조금씩 다르다
위의 normal flow는 큰 범위로.. 이해하면 될듯하다
(애초에 back merge란 말이 git에서 땅땅하고 정해졌다기 보다 쓰는 사람들이 그냥 만든.. 그런..)
(내가 이해한) back merge에 대한 몇가지 예를 들어보겠다
(잘못 이해한 부분이 있다면 코멘트 주세요)
1. develop 브랜치에서 내가 feature/a를 따서 개발하고 옆자리 동료가 feature/b를 같은 시점에 따서 개발하고 있다
동료가 먼저 개발을 마치고 develop 브랜치(integration branch)에 merge를 했다
이 때 새로운 develop 브랜치의 상태를 내 feature 브랜치에 가져오려면 어떻게 해야할까?
> 보통 이럴 때는 변경 사항을 develop 브랜치의 최신 시점으로 rebase를 하겠지만
최신의 develop 브랜치를 내 브랜치에 merge 할 때가 있다. 이 때 merge는 back merge이다
*이 때의 back merge는 좋지 않은 습관이니 rebase를 애용하자
2. git flow에 따라 release도 다 되었고 이제 release finish를 하려한다
저번 글에서 release finish할 때 -b 옵션에 따라서 달라지는걸 언급했었는데 이 옵션은 back-merge와 관련된 옵션이다
-b, --[no]nobackmerge Don't back-merge master, or tag if applicable, in develop |
-b 옵션이 없을 때(back merge허용일 때) release finish를 하면 release 브랜치는 master에 머지된 후 master 브랜치에 붙은 tag가 develop 브랜치에 머지된다
-b 옵션이 있을 때(no back merge) release finish를 하면 release 브랜치는 master와 develop에 각각 머지된다
그림으로 보자면 release branch는 develop branch에서 나왔으니 develop으로 머지가 되어야 normal flow인데
master를 거쳐 merge가 되면 normal flow가 아니라 back merge가 되는 게 아닐까... 하는게 나의 해석이다
이 외에 hotfix 브랜치를 마무리할 때에도 back merge 얘기가 나오는데 일단 여기까지만 정리한다... 어렵다...
+) 참고하면 좋은글
https://stackoverflow.com/questions/47555448/what-is-a-back-merge
https://www.quora.com/What-does-it-mean-to-back-merge-in-version-control
'이게외않되?' 카테고리의 다른 글
[helm] helm 설치 제거(chart 삭제 release 삭제 말고 helm 삭제) (0) | 2022.03.27 |
---|---|
[IntelliJ] Run/Debug Configuration에 JUnit Test 추가하기 (0) | 2021.10.13 |
[Spring boot] 애플리케이션 실행시 바로 종료되는 문제 (Process finished with exit code 0) (2) | 2021.07.06 |
[homebrew] brew update 강제 중지 (0) | 2021.07.06 |
[IntelliJ] Run/Debug Configuration에서 No JDK specified for module 오류 해결 (0) | 2021.07.06 |
- Total
- Today
- Yesterday
- kotlin In Action
- gradle
- back merge
- 도커
- 스프링
- 코틀린
- ImagePullBackOff
- docker pull limit
- JavaScript
- 쿠버네티스
- cacheable
- 도메인주도설계
- QuickTimePlayer
- IntelliJ
- 자바
- 자바스크립트
- java
- 클린코드
- k8s
- Kubernetes
- docker for mac
- ddd
- 스프링부트
- Spring
- kotlin
- clean code
- linuxkit
- docker
- springboot
- gasmask
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |