블로그로 돌아가기
Reference 2026-04-18

Diff 알고리즘 설명: Myers, Patience, Histogram

git, IDE, 리뷰 도구가 매일 보는 차이점을 계산하는 방법.

모든 코드 리뷰와 머지는 diff 알고리즘에 의존합니다.

Myers Diff

git, vim 등 대부분 도구의 기본. O((N+M)D) 시간에 최단 편집 스크립트 찾기.

강점: 증명 가능한 최소 편집.

약점: 함수 이동이나 빈 줄에서 혼란스러운 레이아웃.

Patience Diff

git diff --diff-algorithm=patience

두 파일 모두에서 한 번씩 나타나는 고유 라인에 앵커. 함수 이동과 리팩터링이 훨씬 깔끔.

Histogram Diff

patience의 개선. 반복 라인을 더 잘 처리. 많은 git 구성의 기본.

git config --global diff.algorithm histogram

단어/문자 diff

git diff --word-diff

문서에 유용, 코드에 산만.

3-way 머지

git merge는 diff 위에 재귀적 3-way 머지 사용.

구조화된 데이터

  • jd (JSON)
  • yq diff (YAML)
  • difft (Difftastic) - AST 기반 다언어