Data Project/dev

Git) Git Conflict (깃 충돌) 해결 방법

이동탁 2023. 3. 24. 02:59

Git Conflict (깃 충돌) 해결 방법

 

 

프로젝트를 진행하면서 팀장을 맡아 다양한 Git Conflict를 마주하게 된다.

그때마다 항상 당황하고 짜증을 내면서 해결을 하였지만,

여러 경험이 쌓인 후 깨달은 점은

 

 

git conflict는 오히려 좋다.

 

 

물론 충돌없이 각자가 맡은 파트에서 최선을 다하여 작업하고

합쳐져서 하나의 작업물이 완성이 된다면?

사실 그거야 말로 더할 나위 없이 좋을 수 있다.

 

 

하지만 오히려 git conflict를 활용한다면 서로 같은 파트를 작업하여도

더욱 효율적이고 좋은 코드를 선택하여 작업물의 퀄리티를 높일 수도 있다고 생각한다.

 

 


 

해결 방법

 

dev브랜치 생성 후 checkout
dev브랜치에서의 변경점

 

1. 우선 테스트를 위하여 현재 리팩토링 중인 작업물에서 dev브랜치를 생성한 후 checkout 하였고

src 디렉토리에 test.js를 만들어 변경점을 만들어 준 후 원격 브랜치에 push해두었다.

 

main브랜치에서의 변경점

 

2. main으로 브랜치 변경 후 경로와 이름이 똑같지만 내용이 다른 파일을 생성해서 push해두었다.

 

 

 

 

3. 이후 위와 같이 같은 파일에 다른 내용이 확인된다면, merge를 하였을 때 충돌이 일어나게 된다.

위의 내용을 확인하면 다음과 같은 내용을 얻을 수 있다.

 

 

1) 충돌 : 어느 파트에서 충돌이 났는지 간략하게 확인 가능

2) 충돌을 바로잡고 결과물을 커밋하십시오. : 결국 충돌을 해결한 후 결과물을 커밋 후 push하면 해결이 됨을 알려줌

 

 

VScode상에서 실행 되는 병합 편집기

 

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