드디어 마지막 Conflict 같은 부분을 수정했을 때의 대처이다. Git은 충돌나지 않는 부분까지는 다 해주지만, 이 충돌만 해결해달라고 요청할 것이다.
이전 작업 디렉토리를 삭제해준다.
rm -rf manual-merge
다시 git을 생성해준다.
git init manual-merge
nano work.txt
git add .
git commit -am "work 1"
git branch o2
까지 실행해준다. 이렇게 매번 코드를 적는 이유는, 현재의 나는 깃을 처음 다뤄봤고, 아직 익숙하지 않은 상태이다. 따라서 조금이라도 코드를 익숙하게 하고, 이해하기 위해서 적고 있다. 단순히 영상을 보기만 하는 것보다 효과가 있다.
nano work.txt
-> 내용 추가
git commit -am "master work 2"
o2브랜치도 같은 작업
git checkout o2
nano work.txt
-> 같은 부분 내용 추가
git commit -am "o2 work 2"
이제 다시 병합을 시도한다. 시도하는 과정은
git checkout main
git merge o2
conflict 발생. work.txt에서 conflict가 발생했다. 자동으로 merge하는 것을 실패했다. 충돌을 해결한 다음 그 결과를 commit 해라.
현재 충돌이 났다는 뜻이다.
그럼 그 충돌난 work.txt 내부는 어떤지 보기로 한다.
=======는 구분자이다. 구분자를 중심으로 위쪽은 Head. 현재 브랜치의 내용은 main. 구분자 아래는 o2. 이 구간은 git이 자동으로 처리하지 못하므로, 사용자가 직접 처리해야한다.
만일 두 내용을 모두 표시하고 싶다면
git이 구분해놓기 위해 쓴 텍스트들을 지우고, 그 충돌난 라인에 내용을 입력한다.
그 후 git add work.txt
를 하게되면 git에게 해결했다는 신호를 보내게 된다.
상태가 변한것을 볼 수 있다.
여기서 git commit
만 입력하면, git이 이미 충돌이 났다는 것을 commit 내용에 적어놨다.
새로운 버전이 생성된 것을 볼 수 있다.
내용도 수정된게 잘 들어가 있다.
Git은 상당히 친절하게 우리에게 충돌이 난 부분을 알려주고, 해결할 방법을 제시해준다.