본문
07. 여러 파일에서 conflict가 났을 때는?
이전 영상에서는 파일 하나에서 conflict가 발생하는 상황을 봤습니다. 하지만 개발 실무에서는 파일 여러 개를 수정하는 경우가 많다보니 머지할 때 conflict도 파일 여러 개에서 나는 경우가 많습니다. 이럴 땐 어떻게 해야할까요? 원리는 파일 하나일 때와 같습니다.
일단 아래 그림과 같은 프로젝트가 있다고 해볼게요.
지금 빨간색 박스 안의 커밋(세번째 커밋)에서 어떤 상품의 정보를 담기 위한 파일 3가지(price, after_service, size)를 만들었습니다.
지금은 master 브랜치나, premium 브랜치나 그 히스토리가 같죠?
이제 여기서부터 각 브랜치에서 서로 다르게 커밋을 해볼게요.
master 브랜치와 premium 브랜치에서 3가지 파일을 각각 서로 다르게 수정하고 커밋하겠습니다. 그 과정은 별도로 보여드리지 않고 생략할게요.
그 다음 master 브랜치에서 premium 브랜치를 머지하려고 하면
위 그림처럼 3가지 파일 모두에서 conflict가 발생합니다. 꼭 이런 출력 결과가 아니더라도 이전에 우리가 배운 git status 커맨드를 사용하면 현재 conflict가 발생한 파일들의 목록을 언제든지 확인할 수 있습니다.
자, 각 파일에서 conflict가 어떻게 났는지 하나씩 살펴볼까요?
price 파일
after_service 파일
size 파일
======= 기호를 기준으로
- master 브랜치에서 했던 커밋이 위쪽에,
- premium 브랜치에서 했던 커밋이 아래쪽에
보이는 상태입니다.
일단 price 파일에서만 conflict를 해결해볼게요.
이렇게 conflict를 해결하고,
- git add price
를 실행하고,
다시 git status로 확인을 해보면
price 파일은 conflict를 해결하고 staging area에 올려주었기 때문에 커밋할 수 있는 파일이라는 걸 확인할 수 있습니다. 이렇게 conflict가 해결된 상태를 resolved(해결된) 상태라고 말하기도 합니다.
자, 이제 나머지 두 파일(after_service, size)도 모두 conflict를 해결하고 나서, 늘 하던대로
- git add .
를 실행하고 커밋해주면 됩니다.
그럼 머지가 정상적으로 마무리됩니다!
자, 여러 개의 파일에서 conflict가 발생했을 때도 앞으로 잘 해결할 수 있겠죠? 파일 여러개가 conflict가 났을 때는
- 파일 하나씩 conflict를 해결하고 git add [파일 이름] 커맨드로 하나씩 staging area에 올리거나(중간중간에 git status 커맨드로 현재 상태 확인하면서)
- 모든 파일들의 conflict를 다 해결하고, git add . 커맨드로 한번에 staging area에 올리고
커밋을 하면 됩니다.
댓글