처음부터 차근차근

Branch 충돌 본문

Git

Branch 충돌

_soyoung 2021. 10. 19. 00:18
반응형
Branch 충돌

 

branch 충돌

branch 충돌이란, branch를 다른 branch로 merge할 때 auto merge에 실패하는 것을 말한다.

두 개의 branch가 같은 파일의 같은 곳을 수정할 때 생긴다.

 

 

 

 

branch 충돌이 안 일어나는 상황

 

  1. 서로 다른 파일을 수정해서 merge
  2. 서로 같은 파일의 다른 부분을 수정해서 merge

2번 예)

먼저 master branch에서 third.txt라는 파일을 수정한다.

third.txt파일의 원본(master)
third.txt 수정(master)

third.txt 파일을 add and commit을 한다.

 

그 다음 ksy branch로 가서 third.txt를 수정을 한다.

third.txt 원본(ksy)
third.txt 수정(ksy)

third.txt 파일을 add and commit을 한다.

 

그다음 master로 가서 merge를 하고 third.txt파일에 들어가 본다.

보다시피 error없이 깔끔하게 merge되었다.

즉, 두개의 branch가 같은 파일을 수정한다 해도 서로 다른 부분을 수정하면 branch충돌이 일어나지 않는다.

 

 

 

 

branch 충돌이 일어나는 상황

 

두 개의 branch가 같은 파일의 같은 곳을 수정했을 때  branch 충돌이 일어난다.

 

예)

master 브랜치에서 first.txt파일을 수정한 후 commit 한다.

first.txt 원본(master)
first.txt 수정(master)

ksy branch에서 first.txt파일을 수정한 후 commit 한다.

first.txt 원본(ksy)
first.txt 수정(ksy)

그리고 master branch로 가서 ksy branch를 병합시키면...

branch 충돌

이렇게 branch 충돌이 일어난다.

conflict : 갈등

Automatic merge failed : 자동 병합(merge) 실패

 

이 상태에서 git status를 치면

이렇게 나온다.

Unmerged paths : merge되지 않은 path

both modified : 둘 다 수정됨

 

first.txt 파일을 열면

이렇게 충돌이 난 부분을 표시해주고 있다.

 

git 이 자동 merge를 실행하는 것을 실패했기 때문에 사용자가 이 충돌을 해결하라고 위임한 것이다.

head 즉, master branch의 내용은 ======을 기준으로 화살표 친 내용이고,

그 밑에는 kst branch 내용이다.

 

해결 방법

저 충돌난 코드를 지우고 새로운 코드를 작성하여 git add를 한 다음 git commit을 친다.

충돌난 first.txt 수정
commit message

commit 메세지에서 문제가 해결됬다고 말해준다.

 

 

 

 

 

 

 

'지옥에서 온 Git - 생활코딩' 변형 및 요약

반응형

'Git' 카테고리의 다른 글

reset의 종류  (0) 2021.10.29
reset 취소와 commit checkout  (0) 2021.10.28
branch의 원리와 git log의 원리  (0) 2021.10.01
commit의 원리  (0) 2021.09.30
git add 원리  (0) 2021.09.29
Comments