728x90
원격 vs 로컬 저장소
Git을 사용하면 원격 저장소와 로컬 저장소라는 단어를 들었을 것입니다.
git 저장소는 자신의 컴퓨터인 로컬 저장소와 서버에 있는 원격 저장소로 나뉩니다.
로컬에서 작업한 것은 remote로 push해줘야만 변경사항이 서버(원격 저장소)에 반영됩니다.
아래 사진과 같이 커밋을 한뒤 push를 하는 것이 로컬에서 원격 저장소로 내 소스코드를 반영시키는 것입니다.
pull은 원격 저장소의 소스 코드를 로컬 저장소로 반영하는 것을 말하는 것입니다.
Git에서의 충돌문제는 원격 저장소간의 브랜치를 병합하는 때에도 발생하지만
대부분의 충돌문제는 로컬과 원격 저장소간에 발생합니다.
원격 저장소에서 로컬 저장소로 pull을 할때나 반대의 경우에 push를 할 경우에 발생합니다.
Git 병합 (Push)충돌 문제란
GitHub를 이용하면서 자주 발생하는 문제는 병합시 충돌입니다.
병합(Merge)이란 서로 다른 브랜치를 합치는 기능입니다. 협업을 하다보면 브랜치가 서비스마다 나뉘게 됩니다.
최종적으로 프로젝트를 완성할 때는 각 서비스들을 한 브랜치로 옮겨야 하는데 이 때 병합을 사용합니다.
병합 충돌(Merge Conflict)이란 한 브랜치로 합치는 과정에서 같은 파일을 수정했을 경우 발생하는 문제입니다.
서로 다른 파일을 수정했다면 수정한 버전을 적용하지만 같은 파일의 어떤 버전을 사용해야 할지 모르기 때문에
Git은 병합 충돌이 일어난 부분에 >>>>>>>>>, <<<<<<<<<<<,===========과 같은 표시를 해줍니다.
이 때 개발자가 자신이 원하는 부분은 남겨놓고, 불필요한 부분을 지우는 것으로 병합 충돌을 해결합니다.
Push를 할 경우 로컬 저장소의 버전이 최신이 아닌 경우(다른 사람이 커밋을 한 뒤 원격 저장소에 push한경우)
push가 거절됩니다.
이런 경우 병합(merge) 작업을 진행하여 remote에 반영된 다른 사람의 변경 이력을 로컬 저장소에 갱신해야 합니다.
Git 병합(Pull) 충돌 문제
위와 같은 병합 충돌 문제중에서 Pull을 할 경우에 발생하는 충돌 문제도 있습니다.
위와 같은 상황으로 다른 사람이 이미 push를 한 경우에 발생합니다.
이 때도 마찬가지로 remote에 변경 이력을 로컬 저장소에 갱신하는 것으로 충돌을 해결합니다.
협업을 하며 작업을 진행하면 위와 같은 상황이 정말 많이 발생합니다.
때문에 당황하지 않고 병합을 하는 것이 중요합니다.
'Git' 카테고리의 다른 글
Git을 배워야 하는 이유 (0) | 2024.02.20 |
---|