10:41 그림이 이해가 안갑니다.
3
작성한 질문수 4
안녕하세요 강사님, 강의 잘 듣고 있습니다.
34강 - 협업할 때 conflict 해결하기 중
10:41 벤다이어그램으로 push 할 수 없음으로 말씀해주셨는데,
그림만 보면 리모트 test 브랜치의 빨초파는 로컬 test 브랜치에 있기 때문에,
결과적으로 로컬 test 브랜치가 리모트 test 브랜치를 포함하고 있는 그림이라,
push를 할 수 있는 것 아닌지 문의드립니다. (물론 실제로는 강제로 해야 되겠지만, 설명이 이해가 안가 문의 드립니다.)
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. butterfly black님, 로컬 브랜치와 리모트 브랜치의 포함 관계 및 push 가능 여부가 헷갈리셨군요.
Git에서 push 가능 여부는 단순히 “로컬 브랜치가 리모트 브랜치의 커밋을 포함하는가”만으로 판단하지 않고, 리모트 브랜치의 최신 커밋에서 이어지는 형태인지가 중요합니다.
- 로컬
test브랜치가 리모트test브랜치의 최신 커밋을 포함하고 있고, 로컬에서 새로운 커밋이 이어진 상태라면 일반적인push가 가능합니다. 이는 fast-forward push입니다.
- 반대로 로컬과 리모트가 서로 다른 방향으로 커밋을 가지고 있다면, 로컬 브랜치가 일부 커밋을 포함하고 있더라도 리모트 브랜치의 이력이 사라질 수 있기 때문에 일반적인
push가 거부됩니다.
- 이 경우에는 먼저
pull또는fetch후merge/rebase로 두 이력을 통합해야 하며, 정말로 리모트 이력을 덮어써야 한다면force push가 필요합니다.
또한 브랜치는 커밋을 복사해 담는 공간이 아니라 특정 커밋을 가리키는 포인터입니다. 따라서 그림에서는 각 브랜치가 어떤 커밋을 가리키고 있는지, 그리고 로컬 브랜치의 이력이 리모트 브랜치에서 선형적으로 이어지는지를 확인해야 합니다.
관련 개념은 아래 기존 질문의 답변에서도 확인하실 수 있습니다.
해당 게시글에서는 브랜치가 커밋을 가리키는 포인터라는 점과, fast-forward 상황에서는 포인터를 앞으로 이동할 수 있다는 원리를 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
왜 여기서는 둘 다 선택해서 하는걸 안알려주는지 궁금하네요
0
65
1
cherry pick 질문입니다.
0
84
2
깃헙 작업 완료된 develop 브랜치 질문
0
143
2
[질문] git-flow 에서 release 브랜치 생성
0
102
1
upstream연결하기
0
142
2
gitignore관련 질문
0
144
2
staging area
0
140
2
브랜치 병합 전략에 대한 지식공유자님의 생각이 궁금합니다.
0
163
1
git pull merge 요청 시 draft
0
342
2
rebase 와 3-way merge 의 근본적인 차이
0
175
2
문서가 락이 걸어져있네요.
0
124
1
vscode에서의 github로의 푸시
0
196
2
Git 머지 커밋 되돌리기(revert)와 머지 방식 선택의 안전성 질문
0
239
2
git add 동작 원리에 대한 질문
0
102
2
git flow 문의
0
149
2
git rebase 질문
0
158
2
[추가 질문] 똑같은 브랜치를 다시 pull request하는 경우.
0
257
2
pull request 취소하기
0
1042
2
.gitignore
0
121
2
Commit 메시지 변경 방법
0
978
2
switch 와 checkout 차이점.
0
373
1
강의자료 누락, commit 복사질문
0
258
4
강의 교재 다운로드
0
128
1
git init에서 오류 발생
0
365
2





