본문

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에 올리고

커밋을 하면 됩니다.

반응형

공유

댓글