해결된 질문
작성
·
76
0
rebase conflict 질문드립니다.
강의에서는 rebase시에 test branch에서 main branch로 범위가 수정되면서 main branch의 최신 commit을 가리키고 있다가 베이스로부터 기존 test branch에 있다가 떨어져 나온 커밋들의 변경분에 대해 하나씩 tracked area와 staging area에 반영이 되고 여기서 같은 위치에 수정이 일어났으니 conflict가 난다고 말씀주셨는데 이게 기존 3-way-merge 와는 좀 다른 거 같아서요.
기존 3-way-merge에서는 base 커밋에 따른 diff를 찾다 보니 두 브랜치의 같은 위치에 동시에 수정이 일어났을 경우에는 git이 어떤 걸 최종적으로 반영해야 할 지 몰라 conflict가 난다고 알고 있는데 여기서는 base 커밋에서의 diff를 확인하는게 아니기 때문에 노란색이 초록색으로 수정되었다고 생각해야 하는 거 아닌가요 ?
예를 들어 main branch가 하나만 있고 여기서 yellow를 green으로 수정해서 커밋하는게 가능하듯이 설명에서 보면 head가 가리키는 게 최신 커밋이고 여기서 변동분을 반영하는 거니까 동시에 같은 부분이 변경이 되어서 뭘 반영해야 할지 모르는 것과는 좀 다른 거 같아서요.
감사합니다.
답변 3
0
0
안녕하세요, 인프린님 😀
좋은 의견 감사드립니다.
2:12 부근을 보시면,
green을 워킹디렉토리와 스테이징 에어리어에 더하는 부분을 확인하실 수 있어요.
이 부분을 조금만 더 자세히 살펴볼게요!
여기서 green을 더하라는 diff는..
아무 것도 색칠되어 있지 않은 rectangle의 두 번째 칸에 green을 칠하라는 내용입니다.
근데 지금은 이미 yellow가 칠해져 있는 상황이에요! 😅
그러니까,
아무 것도 칠해져 있지 않은 곳에 green을 칠하려고 하는데,
이미 yellow가 그려져 있다는 내용입니다.
그래서 conflict가 발생했던거에요.
궁금하신 부분이 해결되었나요?
언제든 편하게 질문주세요 😀
0
안녕하세요, 인프런 AI 인턴입니다. 인프린님, rebase와 병합(merge) 과정에서 발생하는 충돌 처리에 대한 질문을 주셨군요.
rebase와 merge는 모두 Git에서 브랜치를 결합하는 방법이지만 처리 방식에서 차이가 있습니다.
3-Way Merge:
Rebase:
Rebase에서 충돌은 연속적인 커밋을 적용하는 과정에서 발생합니다. main
브랜치 뒤로 test
브랜치의 커밋을 재배치할 때, 서로 다른 브랜치에서 동일한 파일의 동일한 부분이 수정된 경우입니다. 이 과정에서는 각 커밋이 순서대로 재적용되므로, 충돌 시에는 수동으로 해결해줘야 합니다.
예를 들어 main
브랜치에서 파일이 yellow
인 상태에서 test
브랜치에서 green
으로 수정했을 때, rebase 시 순서에 따라 커밋이 하나씩 처리됩니다.
Rebase 중 발생하는 충돌은 수동으로 해결해야 합니다. 충돌을 해결한 후:
- git add <파일>
로 충돌을 해결한 파일을 스테이징합니다.
- git rebase --continue
명령어를 사용하여 rebase 과정을 이어 나갑니다.
유사한 개념에 대해 더 살펴보고 싶으시다면 다음 링크를 참고하세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.