해결된 질문
작성
·
14
0
안녕하세요, geek님.
영상 16:55~
부분에서 설명해주시는 conflict를 해결할 수 있는 방법에 대해서 다음 네 가지를 설명해주셨습니다.
main 브랜치 쪽 diff를 더한다.
test 브랜치 쪽 diff를 더한다. (선택됨)
둘 다 더한다.
둘 다 더하지 않고, 아예 다른 내용을 적는다.
그리고 예제에서는 2번 방식을 선택해주셨고, 이에 따라서 머지 커밋은 다음과 같이 계산됩니다.
base(red
) + main 최신 커밋과의 diff(green
) + test 최신 커밋과의 diff(blue
)
즉, 3개가 더해져서 만들어지는 커밋인데요. 이로 인해 3-way merge라는 이름으로 불린다고 이해했습니다.
여기서 질문이 생기는데요.
만약 1번 방식을 선택한다면, 머지 커밋이 다음과 같이 계산됩니다.
base(red
) + main 최신 커밋과의 diff(green
)
즉, 2개가 더해져서 커밋이 만들어집니다.
그런데 앞서 말씀하신 내용을 고려하면 머지의 세부 명칭(예를 들어 3-way merge같은)에 영향을 주는 요소는 '커밋 히스토리의 모양'입니다.
따라서 2개가 더해져서 커밋이 만들어지는 이 상황도 여전히 3-way merge라고 부를 수 있습니다.
그래서 처음 들었던 의문은 "1번 방식을 택했을 때는 2개가 더해지는 건데, 이때도 3-way라고 부르는 것은 그냥 관례적인 표현인가?" 입니다.
그리고 질문을 작성하면서 제가 스스로 내린 답변은 "더하는 개수가 3개여야 하는 것이 아니고, 더할지 말지 고민하는 기준점이 3개인 상황이라 3-way라는 이름이 붙은 것 같다" 입니다.
즉, 커밋 히스토리가 예제와 같은 상황에서는 다음 3가지를 기준점으로 사용하게 됩니다.
두 브랜치의 공통 부모 (base)
main 브랜치의 최종 커밋
test 브랜치의 최종 커밋
각 기준점에 대해 어떤 판단을 내리느냐에 따라 세 개를 더하는 2번 상황이 되거나 두 개를 더하는 1번 상황이 되거나, 또 다른 3번, 4번 상황이 될 수도 있습니다.
하지만 '기준점이 3개'라는 사실을 모든 상황에서 동일하기 때문에 3-way merge라는 이름이 붙여진 것으로 판단했습니다.
가르쳐주신 내용에 혼란을 느낀 부분을 서술하느라 글이 좀 길어졌는데, 결론적으로 '기준점이 3개라서 3-way merge라고 부른다'는 제 판단이 적절한지 여쭤보고 싶습니다.
답변 2
0
안녕하세요, dev.rudevico 님 😀
네, 적절합니다. 제가 강의에서 설명한 내용은 판단해주신대로 입니다.
강의를 만들면서 dev님과 비슷한 고민을 많이했던 터라, 저와 이야기가 잘 통할 것 같은 기분이 드네요 ㅎㅎ
0
안녕하세요, 인프런 AI 인턴입니다. dev.rudevico님, 3-way merge의 개념에 대해 깊은 고민을 하셨군요.
3-way merge는 Git에서 병합할 때 사용하는 일반적인 기법으로, 다음 세 가지 기준점을 기반으로 병합이 이루어집니다:
main
브랜치의 최신 커밋.test
브랜치의 최신 커밋.3-way merge는 이 세 가지 기준점을 사용하여, 충돌이 발생하지 않는 한 병합 커밋을 만들어 냅니다. 충돌이 발생했을 경우에는 사용자가 4가지 방법 중 하나를 선택하여 수동으로 해결할 수 있습니다: main
의 변경을 취하거나, test
의 변경을 취하거나, 두 변경을 모두 반영하거나, 완전히 새로운 내용을 작성하는 것입니다.
네, dev.rudevico님의 판단이 맞습니다. ‘3-way’라는 명칭은 사용되는 커밋 기준점이 세 가지로 나뉘기 때문에 붙여진 이름입니다. 즉, 실제로 병합 중 두 개 이상의 변경이 적용되지 않더라도, 기본적으로 세 개의 기준점을 고려하여 병합을 수행하기 때문에 3-way merge라고 부릅니다.
기준점이 세 개로 구성되기 때문에 기본적으로 3-way merge라 칭하며, 더하는 개수는 상황에 따라 변동될 수 있습니다.
질문에 대한 보다 깊이 있는 이해와 설명을 원하신다면, 다음 링크를 참고해 도움을 받으실 수 있습니다:
- Git 병합의 기본 개념
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
좋은 말씀과 답변 감사합니다! geek님이 걸으셨던 고민의 길을 저도 비슷하게 걷는다고 생각하니 더 힘이 되네요.
남은 강의도 잘 따라가 보겠습니다.