무엇을 하나
두 글을 줄 단위로 비교해 지운 줄(−)과 넣은 줄(+)을 보입니다. 나란히 보기는 짝이 되는 줄을 같은 행에 놓고 줄 안에서 바뀐 글자만 진하게 칠하며, 통합 보기는 diff -u 와 같은 꼴입니다. 「diff -u 복사」로 만든 글은 patch 에 바로 넣을 수 있습니다.
비교 방법은 GNU diffutils 와 같습니다(Myers 최소 편집 + GNU 의 동점 처리). 그래서 어느 줄을 「바뀜」으로 칠지 모호한 경우(빈 줄 · } 가 되풀이되는 설정 파일 등)에도 GNU diff -u 와 같은 줄을 고릅니다.
예시
| 원래 / 바뀐 | 옵션 | 결과 |
|---|---|---|
listen 80; / listen 80; | 없음 | 한 줄 바뀜 |
listen 80; / listen 80; | -b 또는 -w | 같음 |
server_name a; / Server_Name a; | -i | 같음 |
a b c / abc | -b / -w | 다름 / 같음 — -b 는 공백의 양만, -w 는 공백을 모두 무시 |
| 끝 줄바꿈 없음 / 있음 | 없음 | 마지막 줄이 바뀜으로 나오고 \ No newline at end of file 이 붙음 |
옵션
- 공백 모두 무시(-w): 스페이스 · 탭 ·
\r등을 모두 지우고 비교합니다. 들여쓰기만 바뀐 줄이 사라집니다. - 공백 양 무시(-b): 공백 덩어리의 길이 차이와 줄 끝 공백만 무시합니다.
a b와ab는 여전히 다릅니다. - 대소문자 무시(-i): GNU diff 처럼 A–Z 만 접습니다.
Ä/ä·É/é같은 글자는 다르게 봅니다. - 문맥 줄: 바뀐 곳 앞뒤로 보일 같은 줄 수(
diff -U 숫자). 바뀐 곳 사이 같은 줄이 문맥의 두 배 이하이면 한 헝크로 묶입니다.
옵션으로 같다고 본 줄은 통합 출력에서 원래 글 쪽 내용으로 찍힙니다(GNU 와 같음).
어떻게 확인했나
공개 전에 실제 GNU diffutils 3.10 의 diff -u(LC_ALL=C.UTF-8)와 122쌍을 옵션 다섯 갈래(없음 · -w · -b · -i · -i -w)로, 모두 610번 대조했습니다. 표본은 nginx · sshd_config · docker compose YAML · package.json · 접근 로그 · JavaScript · 한글 글에 무작위 편집(지우기 · 넣기 · 바꾸기 · 줄 옮기기 · 중복 줄)을 한 것, 빈 글 · 같은 글 · 끝 줄바꿈 없음 · 끊기지 않는 공백(NBSP, U+00A0), 그리고 빈 줄과 } 가 잔뜩 되풀이되는 쌍 44개(3,000줄짜리 4개 포함)입니다. 610번 모두 지운 줄 · 넣은 줄이 같았고, 머리 두 줄(파일 이름 · 시각)을 뺀 출력이 글자까지 같았습니다. 옵션 없는 경우에는 이 도구가 만든 diff 를 실제 patch 로 원래 글에 적용해 바뀐 글과 바이트까지 같은지도 확인했습니다.
흔한 실수
- 붙여 넣은 글의 끝 줄바꿈 차이를 놓치기 — 한쪽만 끝에 줄바꿈이 있으면 마지막 줄이 바뀜으로 나옵니다(
\ No newline at end of file). - 탭과 스페이스 차이를 내용 차이로 읽기 — 들여쓰기만 다른지 보려면
-w를 켜 봅니다. - 웹 페이지에서 복사한 글을 비교하기 — 줄 끝 공백이나 눈에 안 보이는 공백(U+00A0)이 섞이기 쉽습니다. U+00A0 은
-w로도 무시되지 않습니다(GNU 도 같음).
자주 묻는 것
명령줄에서 같은 결과를 보려면?
diff -u 원래 바뀐 입니다. 옵션은 diff -u -w, diff -u -i 처럼 그대로 붙입니다. 문맥 줄 수는 diff -U 5 로 바꿉니다. 단어 단위로 보려면 git diff --no-index --word-diff 원래 바뀐 이 편합니다.
너무 긴 글도 되나요?
한쪽이 20,000줄을 넘으면 비교하지 않습니다. 모든 줄이 양쪽에 있고 순서만 크게 뒤섞인 최악의 경우에도 브라우저가 몇 초 안에 끝나는 크기로 정했습니다. 그보다 크면 내 컴퓨터의 diff 를 씁니다.
넣은 글이 서버로 가나요?
아니요. 두 글 모두 이 브라우저 밖으로 나가지 않습니다. 주소창이나 브라우저 저장소에도 쓰지 않고, 이 사이트의 방문 통계와 광고에도 넘기지 않습니다. 자세한 것은 개인정보 처리 안내에 있습니다.