충돌이란?

깃이 자동으로 병합을 완료 할 수 없는 상황을 말한다.

 

(예) 두명의 개발자가 각자의 브런치에서 동인한 코드를 수정했을 때 깃 입장에서는 어떤 변경사항을 최종적으로 반영해야 하는지 알수 가 없다.

 

충돌 발생시키기

1. main 에서 코드를 수정하고  커밋 및 푸쉬 를 한 후

2. 브랜치에서 하나의 기능을 추가 한후 커밋을 한다.

3. 다시 main 으로 돌아와서  병합을 시도

자동 병합: test.py
충돌 (내용): test.py에 병합 충돌
자동 병합이 실패했습니다. 충돌을 바로잡고 결과물을 커밋하십시오.

 

위와 같은 메시지가 출력 될 것이다.

 

충돌 해결하기

충돌이 일어난 코드를 확인

<<<<<<< HEAD (현재 변경사항)
print('hello' * 3)

# check odd number
num = int(input("Enter a number: "))
if (num % 2) == 0:
    print(f"{num} is Even")
else:
    print(f"{num} is Odd")
=======
print('hello ' *3)

# check odd number
num = int(input("Enter a number: "))
if (num % 2) == 0:
    print("{0} is Even".format(num))
else:
    print("{0} is Odd".format(num))
>>>>>>> dev2 (수신 변경사항)
  • <<<   >>> 이 충돌이 일어난 구간을 알려주는 기호
  •  ==== 는 구분해주는 기호 

여기서 무엇을 제거하고 저장할 것인지 결정하고 남겨둔 후 

메인에서 최종본만 남겨두고 충돌을 알려주는 구문을 제거하면 된다.

git add .
git commit -m "resolve conflicts"
git push -u origin main

 

확인

git log --pretty=oneline --graph

 

아래와 같이 커밋 내역을 확인 가능

*   d3...be6 (HEAD -> main, origin/main) resolve conflicts
|\  
| * 484...778 (dev2) add pow
* | e5b..17 fit: check odd number
|/  
* ef1...9bbc squash & merge
* 4df..a20126 first commit

+ Recent posts