LabHub
배우기 러닝패스 코스

Git 실전 · 같은 충돌을 네 번째 풀고 있다 · 실습

같은 충돌을 네 번째 풀고 있다

LabHub 에서 이어서 보기

목표

충돌 표시에서 공통 조상을 보고, 한 번 푼 해결을 git 이 기억하게 만들고, -X ours
-s ours 가 결과 파일을 어떻게 다르게 만드는지 내용으로 확인합니다.

왜 중요한가

충돌 해결은 기술이 아니라 판단입니다. 그런데 기본 충돌 표시는 판단에 필요한 정보 하나를
빠뜨립니다 — 원래 무엇이었는지입니다. 그것을 모르면 "한쪽이 지운 것" 과 "양쪽이 다르게
고친 것" 을 구별할 수 없고, 잘못 고르면 남의 수정이 조용히 사라집니다. zdiff3
그 칸을 채워 줍니다. 그리고 같은 판단을 반복해야 하는 상황 — 오래 사는 브랜치를 계속
리베이스하거나 릴리스를 정기적으로 되돌려 합치는 상황 — 에서는 rerere 가 그 판단을
한 번만 하게 해 줍니다. 마지막 두 단계는 이름이 닮아 자주 뒤바뀌는 두 손잡이를 갈라
놓습니다. -s ours 를 내용을 가져오려는 의도로 쓰면 이력에는 합쳐졌다고 적히고 코드에는
아무것도 안 들어오는 상태가 됩니다.

단계

1. /root/gitx8/repo 에 같은 줄을 서로 다르게 고친 브랜치들을 만듭니다.
2. 기본 충돌 표시와 zdiff3 표시를 나란히 notes/zdiff3.txt 에 남깁니다.
3. rerere 를 켜고 충돌을 한 번 풀어 병합을 마칩니다.
4. 그 병합을 되돌리고 다시 병합해, git 이 같은 해결을 스스로 적용하는 것을
notes/replay.txt 에 남깁니다.
5. sidefix-X ours 로 병합하고 결과를 notes/xours.txt 에 남깁니다.
6. legacy-s ours 로 병합하고 결과를 notes/sours.txt 에 남깁니다.
7. 두 손잡이의 차이를 notes/strategies.txt 에 정리합니다.
8. notes/report.md 에 반복 충돌을 줄이는 방법을 정리합니다.

참고

단계 8개

  1. 같은 줄을 서로 다르게 고친 브랜치들
  2. 원래 무엇이었는지 보여 주는 칸
  3. 해결을 한 번 기록시킨다
  4. 두 번째부터는 git 이 대신 푼다
  5. 충돌한 자리만 우리 것으로
  6. 합쳤다고만 적고 아무것도 가져오지 않기
  7. 이름만 닮은 두 손잡이
  8. 반복 충돌을 줄이는 방법