📊 텍스트 비교기
두 텍스트의 차이점을 비교합니다
Diff(차이점 비교)란?
왜 필요한가요?
Diff(Difference)는 두 텍스트나 파일 간의 차이점을 비교하여 추가, 삭제, 변경된 부분을 시각적으로 보여주는 도구입니다. 코드 리뷰, 문서 비교, 설정 파일 검증 등에서 변경사항을 빠르게 파악할 수 있습니다.
Git, SVN 등 버전 관리 시스템에서도 diff 알고리즘을 사용하여 커밋 간 변경사항을 추적합니다. 개발자는 diff를 통해 코드 변경의 영향 범위를 정확히 파악하고 실수를 방지할 수 있습니다.
언제 사용하나요?
- 코드 리뷰: Pull Request의 변경사항 검토
- 설정 비교: 개발/운영 환경의 설정 파일 차이 확인
- 문서 버전 관리: 문서 수정 전후 비교
- API 응답 비교: 예상 응답과 실제 응답 차이 분석
- 마이그레이션 검증: 데이터 이동 전후 비교
- 충돌 해결: Git 머지 충돌 시 양쪽 변경사항 확인
실무 사용 예시
예시 1: 설정 파일 비교
개발 환경 (config.dev.json)
{
"database": "dev_db",
"port": 3000,
"debug": true
}운영 환경 (config.prod.json)
{
"database": "prod_db",
"port": 8080,
"debug": false
}차이: database, port, debug 값이 모두 다름
예시 2: 코드 변경사항
- function calculateTotal(items) {
+ function calculateTotal(items, discount = 0) {
let total = items.reduce((sum, item) => sum + item.price, 0)
+ total = total * (1 - discount)
return total
}함수 시그니처와 할인 로직 추가
Diff 표현 방식
| 표시 | 의미 | 설명 |
|---|---|---|
| + 줄 | 추가됨 (Added) | 새로운 내용이 추가됨 |
| - 줄 | 삭제됨 (Deleted) | 기존 내용이 삭제됨 |
| ~ 줄 | 변경됨 (Modified) | 내용이 수정됨 |
| 줄 | 동일 (Unchanged) | 변경 없음 (컨텍스트) |
주의사항
- 공백/들여쓰기: 공백 차이만 있어도 변경으로 표시됩니다. 포맷터를 먼저 적용하세요.
- 줄바꿈 문자: Windows(CRLF)와 Unix(LF) 줄바꿈 차이에 주의하세요.
- 대량 변경: 파일 전체가 변경된 경우 diff가 의미 없을 수 있습니다.
- 바이너리 파일: 이미지, PDF 등 바이너리 파일은 diff로 비교할 수 없습니다.
- 인코딩: 파일 인코딩이 다르면 같은 내용도 다르게 보일 수 있습니다.
Diff 알고리즘
대표적인 diff 알고리즘:
- • Myers Diff: 가장 널리 사용되는 알고리즘. Git에서 사용.
- • Patience Diff: 코드의 구조적 변경을 더 잘 감지.
- • Histogram Diff: Patience의 개선 버전. 성능 향상.
- • Word Diff: 줄 단위가 아닌 단어 단위 비교.