궁금해요
Q1. 브랜치 원리
5세션 12에서 “main은 복사되는 게 아니라 동일한 커밋을 여러 브랜치가 담고 있다”는 설명이 직관적으로 잘 그려지지 않아요. (복사가 아니면 정확히 어떤 메커니즘일까?)
Q2. 머지와 컨플릭트
fast-forward 구조(예시 이미지)에서 빨간색 영역의 코드는 테스트 도중에 수정이 가능한건가요? 수정이 가능해서 수정 했다면 머지할 때 컨플릭트 가 나는거 아닌가요..? 왜 헷갈리냐면 강의에서 fast-forward 머지에서는 각각의 diff가 없기 때문에 conflict가 안 난다고 햇는데, 그럼 이런 구조는 fast-forward가 아닌 상황인건가요..?

Q3. HEAD의 부모 커밋
아래 예시이미지에서 HEAD가 가리키는 커밋(main : Merge branch 'test')의 부모 커밋은 test add blue to rect와 add green to rect 이렇게 두 개가 맞는지 확인을 하구싶어요.

回答 3
0
Q2. 코드를 새롭게 수정하고 커밋을 한 상태에서 머지하는 것으로 생각했어요.
아 그러면 구조가 3way 구조가 되는건가 싶네요..?
0
안녕하세요, 정이경님 😀
Q1. 브랜치는 커밋을 가리키는 포인터입니다. 여러 브랜치가 동일한 커밋을 가리킬 수 있습니다. 그래서 여러 브랜치가 동일한 커밋을 담고 있다고 표현한 겁니다. 이에 대한 내용은 "브랜치 실제 모양 #HEAD "회차를 참고해주세요!
Q2. 직관적인 그림 감사드립니다. 화살표로 가리키는 부분에서 "코드를 새롭게 수정 + 커밋을 새롭게 만들지는 않고," 머지하는 상황일까요?
Q3. 네 맞습니다. HEAD가 가리키는 커밋(main : Merge branch 'test')의 부모 커밋은 test add blue to rect와 add green to rect 두 개입니다.
0
안녕하세요, 인프런 AI 인턴입니다. 정이경님, Git의 브랜치와 머지, 그리고 커밋 관련 원리에 대해 질문 주셨네요.
Q1. 브랜치의 메커니즘
Git에서 브랜치는 단순히 커밋을 가리키는 포인터입니다. 즉, 실제로 브랜치를 생성할 때, Git은 새로운 스냅샷을 복사하는 것이 아니라, 특정 커밋을 가리키는 포인터만 만드는 것입니다. 각 브랜치가 동일한 커밋을 가리키고 있기 때문에 동일한 내용을 공유하지만, 새로운 커밋이 추가될 때는 그 브랜치의 포인터가 최신 커밋을 가리키게 되는 방식입니다.
Q2. Fast-forward 머지와 컨플릭트
Fast-forward는 대상 브랜치의 포인터만을 이동시킬 수 있는 경우를 말합니다. 이는 중간에 변경된 커밋들이 없이 브랜치 간 변경이 선형적인 경우에 가능합니다. 따라서 fast-forward는 기본적으로 컨플릭트가 발생하지 않습니다. 만약 테스트 도중 해당 영역에서 수정이 발생했다면, 이는 fast-forward가 아닌 일반 머지 상황에 가까워질 것이고, 이 경우엔 컨플릭트가 발생할 여지가 있습니다.
Q3. HEAD의 부모 커밋
Git에서 병합 커밋은 두 개 이상의 부모 커밋을 가질 수 있습니다. 예시 이미지에서 “main: Merge branch ‘test’” 커밋이 있다면, 이 병합 커밋은 ‘test’ 브랜치의 최신 커밋과 ‘main’ 브랜치의 최신 커밋을 병합하여 생성된 것이므로 두 개의 부모 커밋(“add blue to rect”와 “add green to rect”)을 가질 가능성이 있습니다.
질문에 대한 이해를 돕기 위해 유사한 예시와 개념을 다룬 링크를 제공하려고 합니다. 추가적으로 살펴보고 싶으시다면 다음 링크를 참고해 주세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
깃 풀(git pull)에 대한 궁금증이 있습니다!
0
11
1
섹션7 수업자료 업로드 부탁드립니다.
0
22
2
gitforwindows에서 맥은 뭘 다운받아야 하나요...?
0
31
2
d-day count소스및 그라비티에서 기술하면 뭔가 내용이 안나오네요
0
21
1
간단한 사이드 프로젝트 작성에도 Max 요금제를 결제하는게 좋을까요?
0
57
2
git 커밋한 내용 궁금합니다.
0
27
1
충돌의 최소화 파트 질문입니당!
0
28
1
자바스크립트 파일 중, DOM 영역에서 querySelector가 아닌 다른 함수를 쓰는데 괜찮을까요?
1
81
2
48강에 필요한 아스키아트 자료가 첨부되어 있지 않습니다.
0
54
2
mac python 3.10 - permission denied
0
54
1
26강 [게임 메인 루프 및 메뉴 구현]에서 2가지 오류가 있어서 남기게 되었습니다.
0
69
2
Rider에서 .ignore 플러그인으로 .gitignore 파일 내용 생성시 Csharp으로 검색되는 내용이 없습니다.
1
67
2
EC2 설정보다 RDS를 먼저 설정하는 이유
0
101
1
pull할때
0
41
1
강의 마지막에 언급하는 '다음 강의'란?
0
85
1
3-way merge에서의 conflict를 해소할 수 있는 4가지 방법
0
136
2
git checkout 되돌리기
0
214
2
파일별 git checkout
0
71
1
git branch 결과
0
90
2
8강 git status 관련 질문
0
74
2
머지 2번째 강의 pdf가 자료에 빠져있는 것 같습니다.
0
69
1
geek 강사님!
1
77
1
git diff는 언제 사용하나요?
0
179
2
staging area 질문있습니다.
0
138
2

