less than 1 minute read

충돌(conflict)이 발생했을 때, 한쪽 변경 사항을 적용하고 싶다. 주로 테스트 데이터 커밋이다. 코드 변경 사항과 섞여 들어가지 않게 데이터만 따로 커밋을 만든다. push 전에 걸러내면 되니깐. 중앙 저장소에 있는 커밋을 로컬로 가져왔는데, 데이터에서 충돌이 발생했다. 이걸 머지? 노노 양 많으면 토한다. 그럴 땐, 한쪽을 그냥 사용하면 된다.

$ git pull
$ git checkout feature-1
$ git rebase master

충돌이 발생했다.

$ git checkout --ours  <file>
$ git checkout --theirs  <file>

둘 중 어떤 걸 사용하면 되나? 난 이거 할 때마다 헷갈린다. 왜냐면 feature-1은 내가 작업한 거니깐 이게 ours 처럼 느껴지기 때문이다.

하지만 땡! rebase를 할 때, master가 부모고 feature-1 브랜치의 커밋을 하나씩 자식으로 연결한다. 즉 master가 ours고 feature-1이 theirs가 된다.

정리한다고 했지만, 막상 사용할 때가 되면 또 헷갈린다. rebase –continue 명령을 하기 전에 확인하는 습관만 들이면 좀 헷갈려도 괜찮다. 확인하고 진행하니깐.

참고

Tags:

Categories:

Updated: