본문 바로가기
DEVELOPMENT

git conflict(충돌) 해결하기

by Z@__ 2021. 2. 13.
반응형

대학생 때부터 지금까지 깃을 쭉 사용하고 있지만.... 사실 혼자만의 프로젝트를 commit -> push만해서 버전관리보다는 그냥 저장용(?) 혹은 잔디심기용으로 사용해왔다.

 

하지만 코드스쿼드 과정을 들으면서 한 프로젝트에 여러 브랜치를 만들어 사용하게 되어 conflict를 어떻게 해야하는지 정리를 해보려고 한다.

 

사실 지금도 git command보다는 git desktop을 사용하거나 웹에서 모든 걸 하기 때문에 command에 익숙해져야 할 것 같다.

 

일단은!! 어떻게 돌아가는지 이해를 하기 위해 테스트를 해보려고 한다.

 

내가 가정한 상황은 main 브랜치가 있고, 내가 작업중인 firstBranch가 있다. 내가 작업한 내용으로 PR을 보냈고, 이 때 main 브랜치에 변경이 생겼을 때 발생하는 conflict에 대해 resolve를 해보려고 한다.

 

 

 

 

1. 첫번째로 gitTest라는 저장소를 생성했다.

 

2. 그리고 github desktop에서 repo를 clone해주었다.

 

3. 새로운 브랜치를 만들기 위해 가운데 있는 current branch를 클릭한 후 new Branch를 눌러 firstBranch를 생성했다.

 

4. 이렇게 firstBranch가 생겼으면 current Branch옆에 publish branch를 눌러준다.

 

5. 그럼 이렇게 main브랜치와 firstBranch가 생긴 것을 확인할 수 있다.

 

6. firstBranch에 README.md에 "git merge conflict resolve"라는 내용을 추가하고 commit push를 해주었다.

 

7. 이렇게 firstBranch에 README.md가 바뀐 것을 확인할 수 있다.

 

8. 이렇게 PR을 보낸다. (좋은 commit message를 작성하는 법도 공부해야 된다..!!)

 

이렇게 PR을 보낸 상태에서 main에 README.md를 수정하여 충돌이 발생하도록 해볼 것이다.

 

 

9. 이렇게 current branch를 main으로 변경해주면 vsc에서도 main branch를 수정할 수 있게된다.

 

10. main브랜치에서 firstBranch와 다른 내용을 작성한 후 commit-> push를 한다.

 

 

11. 이렇게 초록색이였던 #1 PR의 Merge pull request 버튼이 비활성화 된다.  Resolve conflicts를 누른다.

 

 

12. Resolve conflicts를 누르면 README.md파일에 firstBranch의 내용과 main브랜치의 내용이 둘다 보이게 되고 저렇게 빨간 가지가 생긴 부분을 수정해준다. 난 firstBranch의 내용만 남겨보았다.

 

13. 그러면 이렇게 빨간 가지가 없어지고 Mark as resolved를 누른다.

 

14. 다시 기분 좋은 초록색 버튼이 생기면서 README.md에도 초록색 체크 표시가 생긴다. Commit merge를 누른다.

 

 

15. 그러면 비활성화 되었던 Merge pull request가 다시 활성화된다. 

 

16. 최종적으로 firstBranch의 내용이 반영되어 merge되었다.

 

 

 

 

지금 상황은 간단하게 해결이 된 것 같은데... 프로젝트를 계속 진행하면서도 이렇게 모든 충돌들이 해결될지는 모르겠다. 

 

그리고 git comman를 이용하는 방법도 해봐야할 것 같다!!

 

참고 영상

https://www.youtube.com/watch?v=JtIX3HJKwfo&ab_channel=TheCodingTrain

 

반응형

댓글