복수의 개발자가 서로다른 내저장소에서 버전관리하던 파일을 하나의 파일로 합칠 때 2가지 개념이 발생된다. 첫째 서로 중복되는 파일이 없으면 합쳐지지만, 둘째 서로 중복되는 파일이 있으면 충돌(conflict)되는 사항이 있으면 git에서 상황에 따라 알맞게 처리를 해주면서 작업이 진행된다.
예를 들어서 프로젝트에서 상황이 발생했을 때, issue를 생성하여 담당자를 배정한다. 예를 들어서 회원가입 기능에 버그가 발생되었을 때, 특정 부분의 CSS적용을 변경하고 싶을 때 등등의 문제가 있으면 각각의 상황에 대하여 issue를 등록하게 된다. (githup에서 진행)
branch의 개념은 생성된 1,2,3 파일 있다고 하자. 각 파일마다 담당자가 각자 있다고 할 때, 한번에 버전관리를 하기보다 1번 담당자가 1번에 해당되는 branch를 생성하여 관리하고, 2번 담당자가 2번에 해당되는 branch를 생성하여 관리하고, 3번 담당자가 3번에 해당되는 branch를 생성하여 관리한 후에, 이를 합치는 것을 말한다.
조각버전을 완성했다면, 이제 합쳐주기를 하면 됩니다. 메인가지에서 파생된 branch를 합치는 것, merge(병합)이라고 합니다. 이때 합쳐진 메인가지에는 branch의 변동사항까지 전부 조회할 수 있게 된다.
이렇게 함으로 조각버전들이 하나로 합쳐지게 됩니다. 이때 메인가자도 브랜치라고 이름이 붙는다는 점 기억하자. 그럼 이제 합병되어 필요없어진 브랜치는 삭제해보자.
각각의 브랜치에서 같은 파일을 수정했다면, 아마도 충돌이 발생될 것입니다. 이를 해결해보자.
충돌이 발생했을 때, main브랜치의 내용
충돌나는 브랜치명, 또는 commit에서의 다른 파일 내용을 보여준다. 어떠한 부분에서 충돌이 발생했는지 보여준다.
<<<<<<< 부터 >>>>>>> 까지가 충돌이 발생된 부분이고, =======를 기준으로 위쪽 main 브랜치와, 아래쪽 하위 브랜치에서의 충돌되는 부분이 발생되었다는 것을 가르쳐준다. 충돌을 해결하는 방법은 반영할 내용만 남기고 지워주는 것이다. 해당부분을 수정하고 main을 commit 하려고 과정을 시도하면, 자동으로 충돌되었던 부분이 수정되었다는 메시지가 기록된다. 이를 확인한 후에 commit하면, 충돌된 부분이 해결된 것을 볼 수 있다.
하단에 있는 이전 버전의 commit을 보면 origin(원격)/main(로컬) 저장소 모두에 반영된 것에 비해서, 상단의 commit은 main(로컬)에만 저장된 것을 볼 수 있다. 그렇다면 어떻게 해야 할까? 바로 push이다.
그럼 해당부분이 적용된 것을 볼 수 있다. 문제는 pull를 하는데 30분이나 걸렸다는 사실이다. 이유는 push 하려는 githup에 로그인이 되지 않아서였다. 방법은 계정을 삭제하고 다시 토큰을 발급받고 진행함으로 해결했지만, 나중을 위해서 아래에 어떤 부분이 문제였는지 기록하고자 한다.
주황부분은 githup의 UserName이 들어가는 자리이다. 알 수 없지만 첫번째 주황색 부분에 UserName이 지워져 있었다. 그리고 다시 적용하면서 보았지만, 필자는 00abcdef00 순으로 순자와 알파벳으로 구성된 UserName을 사용하고 있는데, 00abcde으로 뒷부분의 숫자가 제거된 url을 가지고 있었다. 이유는 모르겠지만, 이 부분을 기억하고 있다면, 다시 오류가 발생되었을 때 대처할 수 있을 것이다.
이런식으로 브랜치만 push해주면, githup에도 해당 브랜치 저장소가 생성된 것을 확인할 수 있다.
author. EDWIN
data 23/01/30