git & github 공부 기록

Git 브랜치 충돌(Conflict)처리

stop-zero 2023. 1. 21. 22:29

https://www.youtube.com/watch?v=yRjc6mmRol4&list=PLRx0vPvlEmdD5FLIdwTM4mKBgyjv4no81&index=8 


Branch Conflict

두 개 이상의 브랜치에서 동일한 파일을 수정할 때, 그 내용이 다르면 merge할 때 충돌이 일어난다. 

충돌이 일어나면 해결한 후 병합을 해야한다.

이 과정을 보기 위해 이전 글과 같은 방식으로 develop 브랜치를 생성하고 브랜치를 가르키게 한다.

이 상태에서 코드 수정을 진행할 것이다. 

수정 전 -> 후

간단하게 password 를 변경하였다. 

코드 수정 후 , add> commit 진행한다. 

git log로 확인해보면 develop 브랜치에 추가되었고, 마스터 브랜치는 변경되지 않았다. 

git checkout 으로 브랜치를 마스터로 이동시켜준다. 

그러고 소스코드를 변경해준다. //주석만 달 것...

git add . 로 수정된 코드 올려주고 git log로 보면 헤드가 마스터를 가르키고 있다. 

git checkout develop 로 브랜치를 변경하고 나서 보면, 헤드가  develop 만 가르키는 것을 볼 수 있다. 

더 이상 develop과 master는 같지 않다. 

merge하고 master로 옮겨주고 merge 하면 충돌이 난다. 

if.py를 열어보면 난리났네 이게 뭐야 싶은데,

자동으로 소스코드가 다른 부분을 구분해주고 있다.

위에는 master 브랜치 코드이고, 아래는 develop 브랜치 부분의 코드이다.

이때 사용할 코드만 남기고, 나머지는 모두 지운 후 저장해주면 된다. 

이후 수정된 내용을 add> commit>merge 까지 해주면 성공적으로 병합이 된 것이다. 

git log로 보면 master 브랜치는 이미 develop 브랜치를 병합을 하였기에 함께 한 화면에 보인다. 

 master 브랜치는 이미 병합을 한 상태이기에 develop 브랜치는 필요가 없어졌다...!

필요 없는 것은 빠르게 지우자.

git branch -d "브랜치 명"

지운 뒤에 git push 로 원격 저장소에도 저장을 적용시켜주면

 

git 에서도 병합된 내용을 확인할 수 있다.