본문으로 바로가기

텍스트 비교(Diff) 도구 완전 가이드: 계약서·코드·문서 변경 추적

2026.03.302026.07.10 수정25분 읽기

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

목차

계약서 수정본을 받았는데 어디가 바뀌었는지 모르겠다면?
코드 리뷰에서 이전 버전과 뭐가 달라졌는지 확인해야 한다면?
두 PDF 사이의 변경점을 빠르게 찾아야 한다면?
텍스트 비교(Diff) 도구를 쓰면 두 텍스트의 차이를 색상으로 즉시 확인할 수 있습니다.

이 글은 Diff의 원리, 줄·단어·문자 단위 비교의 차이, 계약서·코드·번역·설정 파일 활용법, Git diff 읽는 법,
그리고 색약 친화 표시까지 실무 노하우를 한 번에 정리합니다.

Diff란?#

Diff(Difference)는 두 텍스트 사이의 차이를 추출하는 기법입니다.
1970년대 유닉스 운영체제의 diff 유틸리티에서 출발해 소프트웨어 개발에서 코드 변경 이력을 관리하기 위해 발전했지만,
지금은 문서 교정·계약서 검토·번역 검수·법무·QA 등 다양한 분야에서 활용됩니다.

결과는 보통 세 가지 색으로 표시됩니다.

  • 초록(추가, +): 새로 추가된 내용
  • 빨강(삭제, −): 제거된 내용
  • 회색(동일): 변경 없는 내용

색약 사용자를 위해 보통 텍스트 부호(+, )도 함께 표시하는 것이 표준입니다.

알고리즘: Myers Diff#

대부분의 Diff 도구는 1986년 발표된 Myers Diff Algorithm을 사용합니다.
이 알고리즘은 두 시퀀스(텍스트 라인 또는 단어)의 최장 공통 부분 수열(LCS, Longest Common Subsequence)을 찾아
변경점을 최소로 표시합니다.

Git의 git diff, GitHub PR diff, VS Code의 변경 표시, 그리고 모든 일반 Diff 도구가 이 알고리즘에 기반합니다.
같은 입력에 대해 거의 동일한 결과가 나오는 이유입니다.

활용 사례별 사용법#

1. 계약서·법률 문서 비교#

계약서 초안과 수정본을 비교할 때 가장 유용합니다.

  1. 원본 텍스트를 왼쪽(Before) 영역에 붙여넣기
  2. 수정본을 오른쪽(After) 영역에 붙여넣기
  3. 빨간 부분(삭제)과 초록 부분(추가)을 중점적으로 확인
  4. 문장 의미 변화 검토(이 부분은 사람의 판단)

:

  • PDF 계약서는 텍스트로 복사(Ctrl+A → Ctrl+C)해서 사용
  • 스캔본은 OCR 변환(구글 드라이브, Adobe Acrobat OCR) 후 사용
  • 원본·수정본 일부만 비교하려면 해당 단락만 잘라 붙여넣기
  • 구두점 차이("그러나" vs "그러나,")가 의미 변화를 가져올 수 있음

2. 코드 변경 확인#

개발자가 아닌 경우에도 설정 파일, SQL 쿼리, 스크립트 비교에 활용할 수 있습니다.

Before:
SELECT name, age FROM users WHERE status = 'active'

After:
SELECT name, age, email FROM users
WHERE status = 'active' AND created_at > '2025-01-01'

email 컬럼 추가, AND created_at > '2025-01-01' 조건 추가가 시각적으로 표시됩니다.

3. 번역·교정 전후 비교#

교정 전과 후를 비교해 어떤 표현이 바뀌었는지 확인할 때 쓸 수 있습니다.

번역가나 편집자는 클라이언트 피드백 적용 전후를 Diff로 비교해 수정 내역을 명확히 전달할 수 있습니다. 출판 편집·웹 콘텐츠 교정 워크플로의 표준입니다.

4. 설정 파일 비교#

서버 설정, .env 파일, 구성 파일을 환경별로 비교할 때 유용합니다.
개발 환경(development)과 운영 환경(production)의 설정 차이를 빠르게 파악할 수 있습니다.

Before (.env.development):
DB_HOST=localhost
DEBUG=true
LOG_LEVEL=debug

After (.env.production):
DB_HOST=db.example.com
DEBUG=false
LOG_LEVEL=info
SENTRY_DSN=https://...

각 환경별 차이가 한눈에 보여 배포 전 점검에 효과적입니다.

5. API 응답 비교#

API 변경 후 응답 구조가 어떻게 달라졌는지 비교합니다.

Before:
{ "user": { "id": 1, "name": "홍길동" } }

After:
{ "user": { "id": 1, "name": "홍길동", "email": "hong@example.com" } }

리그레션 테스트, API 버전 마이그레이션, 클라이언트 영향 분석에 사용합니다.

6. 학술 논문·이력서 수정 추적#

지도교수 피드백 반영 전후, 이력서 버전 관리, 자기소개서 첨삭 비교 등 글쓰기 작업에 활용합니다.

비교 옵션 이해하기#

줄 단위 vs 단어 단위 vs 문자 단위#

모드특징적합한 경우
줄(Line) 단위줄 전체를 하나의 단위로 비교코드, 설정 파일, 로그
단어(Word) 단위단어 하나하나를 비교일반 문서, 계약서
문자(Char) 단위글자 하나씩 비교오탈자 교정, 짧은 텍스트

문서 비교에는 단어 단위가 가장 읽기 편하고, 코드 비교에는 줄 단위가 적합합니다.
짧은 한 줄 안의 미세한 차이는 문자 단위가 명확합니다.

공백·줄바꿈 무시 옵션#

  • Ignore whitespace: 들여쓰기·공백만 다르면 같은 줄로 처리
  • Ignore case: 대소문자 차이 무시
  • Ignore line endings: CRLF(Windows)와 LF(Unix) 차이 무시

들여쓰기, 공백 정리만 한 경우 공백 차이를 무시하면 실제 내용 변경에 집중할 수 있습니다. 코드 리뷰에서 자주 사용합니다.

컨텍스트 라인#

GitHub PR 등에서 변경된 줄 위·아래 3줄(기본값)을 함께 표시해 변경의 맥락을 보여줍니다.
git diff -U10처럼 라인 수를 늘릴 수 있습니다.

Git Diff 읽는 법#

개발자가 매일 마주하는 Git Diff 형식입니다.

diff --git a/src/app.js b/src/app.js
index 7f3d2f1..8a4e1c0 100644
--- a/src/app.js
+++ b/src/app.js
@@ -10,7 +10,8 @@ function calculateTotal(items) {
   let sum = 0;
   for (const item of items) {
-    sum += item.price;
+    sum += item.price * item.quantity;
   }
+  sum *= 1.1; // 부가세 10%
   return sum;
 }

해석:

  • --- a/...: 변경 전 파일
  • +++ b/...: 변경 후 파일
  • @@ -10,7 +10,8 @@: 변경된 줄 범위(전: 10번째 줄부터 7줄, 후: 10번째 줄부터 8줄)
  • -: 삭제된 줄(빨강)
  • +: 추가된 줄(초록)
  • 공백으로 시작: 변경 없는 컨텍스트 라인

GitHub PR 페이지의 "Files changed" 탭이 이 형식을 시각화합니다.

한계와 주의사항#

의미 변화는 직접 판단#

Diff 도구는 텍스트 차이만 보여줄 뿐, 법적·의미적 변화의 중요도를 판단하지 않습니다.
"계약 기간: 1년"이 "계약 기간: 2년"으로 바뀐 것을 발견해도 그 의미는 사람이 판단해야 합니다.
계약서 검토는 항상 변호사·법무 전문가의 최종 검토가 필요합니다.

대용량 텍스트#

수천 줄이 넘는 문서는 브라우저 기반 도구에서 느려질 수 있습니다. 이 경우 명령줄 도구나 전용 소프트웨어를 사용하는 게 좋습니다.

# 명령줄 diff
diff old.txt new.txt
diff -u old.txt new.txt    # unified 형식 (읽기 쉬움)
diff -y old.txt new.txt    # side-by-side 형식

# 색상 출력
diff --color old.txt new.txt

인코딩 차이#

UTF-8과 EUC-KR로 저장된 같은 한글 텍스트를 비교하면 인코딩 차이로 모든 글자가 다르게 보일 수 있습니다. 비교 전 인코딩을 일치시킵니다.

보이지 않는 문자#

복사·붙여넣기 과정에서 보이지 않는 문자(zero-width space , NBSP  , 탭/공백 혼용)가 들어가 의도치 않은 차이가 생기기도 합니다.
이상한 차이가 보이면 hex 뷰어로 확인합니다.

색약 친화 옵션#

남성의 약 8%, 여성의 약 0.4%가 적록 색약입니다. 빨강·초록만으로 구분하는 Diff는 색약 사용자에게 정보 전달이 실패할 수 있습니다.

권장 처리:

  • 부호 병행: +, 텍스트 부호를 색상과 함께 표시
  • 굵기·밑줄: 색상에 더해 텍스트 스타일 변화
  • 파랑·주황 옵션: 빨강·초록 대신 파랑·주황 색상 옵션 제공
  • 고대비 모드: WCAG AAA 7:1 대비

GitHub는 다크모드와 색약 모드에서 부호와 함께 색상을 제공합니다.

자주 묻는 질문#

Q. 워드(.docx) 파일을 직접 비교할 수 있나요?

A. Microsoft Word에 "비교" 기능이 내장되어 있습니다(검토 → 비교).
두 .docx 파일을 선택하면 변경 내역이 추적된 새 문서가 생성됩니다.
일반 텍스트 도구로 비교하려면 텍스트만 복사해 붙여넣어야 합니다.

Q. PDF 두 개를 비교할 수 있나요?

A. Adobe Acrobat Pro에 PDF 비교 기능이 있습니다. 무료 도구로는 PDF에서 텍스트 추출(또는 OCR) 후 텍스트 Diff 도구로 비교합니다.

Q. 이미지의 차이도 Diff로 볼 수 있나요?

A. 텍스트 Diff 도구로는 불가능합니다.
이미지 Diff에는 별도 도구(ImageMagick compare, BeyondCompare, Pixelmator)가 필요합니다.
디자인 작업에서는 Figma의 Version History 비교 기능을 활용합니다.

Q. Diff 결과를 어떻게 동료에게 공유하나요?

A. 공유 방법:

  • 결과 화면 캡처 후 이미지로 전달
  • Diff 결과 텍스트를 Markdown 코드 블록으로 저장
  • GitHub Gist에 업로드(.diff 확장자)
  • VS Code의 Live Share로 실시간 공유

Q. Diff 알고리즘에 따라 결과가 다를 수 있나요?

A. 미세하게 다를 수 있습니다.
Myers 알고리즘이 표준이지만,
같은 변경을 다르게 표시할 수 있습니다(예: 한 블록 이동을 "삭제+추가"로 표시 vs "이동" 단위로 표시).
Git은 --patience, --histogram 등 다른 알고리즘 옵션을 제공합니다.

Q. 두 코드의 의미가 같은지(리팩토링 검증) Diff로 확인 가능한가요?

A. 텍스트 Diff는 외형 차이만 보여줍니다.
의미 동등성은 단위 테스트, 정적 분석 도구(SonarQube),
또는 AST(Abstract Syntax Tree) 비교 도구(semantic-diff, ast-diff-tool)가 필요합니다.

Q. 큰 데이터(JSON·CSV) 차이를 보려면?

A. 일반 텍스트 Diff로도 가능하지만, 데이터 전용 도구가 더 좋습니다.

  • JSON: jd, jsondiffpatch
  • CSV: csv-diff(Python), csvdiff
  • 데이터베이스: pgdiff, mongodiff

텍스트 비교(Diff) 도구 활용#

텍스트 비교 도구에 두 텍스트를 붙여넣으면 줄 단위·단어 단위 차이를 색상으로 표시합니다.
추가·삭제 부호와 함께 색약 친화 옵션을 지원하며, 결과를 Markdown 형식으로 복사할 수 있습니다.

텍스트 작업이 더 필요하다면 글자 수 세기 가이드에서 분량 관리를,
대소문자 변환 가이드에서 명명 규칙 변환을,
CSV ↔ JSON 변환 가이드에서 데이터 형식 변환을 확인할 수 있습니다.

이런 글도 읽어보세요

전체 글 보기

관련 도구