Git Conflict (깃 충돌) 해결 방법
프로젝트를 진행하면서 팀장을 맡아 다양한 Git Conflict를 마주하게 된다.
그때마다 항상 당황하고 짜증을 내면서 해결을 하였지만,
여러 경험이 쌓인 후 깨달은 점은
git conflict는 오히려 좋다.
물론 충돌없이 각자가 맡은 파트에서 최선을 다하여 작업하고
합쳐져서 하나의 작업물이 완성이 된다면?
사실 그거야 말로 더할 나위 없이 좋을 수 있다.
하지만 오히려 git conflict를 활용한다면 서로 같은 파트를 작업하여도
더욱 효율적이고 좋은 코드를 선택하여 작업물의 퀄리티를 높일 수도 있다고 생각한다.
해결 방법
1. 우선 테스트를 위하여 현재 리팩토링 중인 작업물에서 dev브랜치를 생성한 후 checkout 하였고
src 디렉토리에 test.js를 만들어 변경점을 만들어 준 후 원격 브랜치에 push해두었다.
2. main으로 브랜치 변경 후 경로와 이름이 똑같지만 내용이 다른 파일을 생성해서 push해두었다.
3. 이후 위와 같이 같은 파일에 다른 내용이 확인된다면, merge를 하였을 때 충돌이 일어나게 된다.
위의 내용을 확인하면 다음과 같은 내용을 얻을 수 있다.
1) 충돌 : 어느 파트에서 충돌이 났는지 간략하게 확인 가능
2) 충돌을 바로잡고 결과물을 커밋하십시오. : 결국 충돌을 해결한 후 결과물을 커밋 후 push하면 해결이 됨을 알려줌
4. 위와 같이 병합 편집기가 실행이 되는데, 병합 편집기에서 열기를 클릭하면
수신 : merge를 하는 branch (dev)
현재 : merge를 받는 현재 branch (main)
즉 main 브랜치 위에서 git merge dev를 실행하였으므로,
main(현재) + dev(수신) 이 되는 것
위와 같은 화면을 확인 할 수 있다.
여기서 우리는 선택을 할 수 있는데 수신하는 branch와 현재의 branch중에서
원하는 변경점을 선택하면 결과에서 어떻게 merge가 되는지 확인 할 수 있다.
여기서 우리는 현재 (main) branch에서의 변경점을 선택하였고, 병합 수락을 누르면 내가 선택한 변경점이 적용된다.
그럼 위와 같이 완성된 파일을 확인 할 수 있고
git status로 현재의 상태를 확인 할 수 있는데, 모든 충돌을 바로잡았지만 아직 병합(merge)이 진행이 되고 있으므로
병합을 끝마치기 위해 커밋 후 push를 해준다.
이렇게 하면 모든 충돌을 바로 잡은 후 병합을 완료한 후 완료된 작업물을 원격 브랜치에 올리게 되었다!
간단 정리
1. 병합 편집기를 연다.
2. 원하는 변경점을 선택한 후 병합 수락을 누른다.
3. 병합이 완료된 내용을 커밋하고 원격 브랜치로 올린다.
알고 있으면 지금처럼 아주 간단해 보이지만,
모르고 있을 때는 한 없이 오랜 시간이 걸렸던 깃 충돌...
혹시라도 같은 고충을 겪고 있다면 해당 글을 참고 하시기 바랍니다 ㅎㅎ
'Data Project > dev' 카테고리의 다른 글
dev) Route를 컴포넌트로 따로 관리하기 (0) | 2023.03.15 |
---|