‘수정 전’과 ‘수정 후’를 비교해 바뀐 곳만 떠오르게 하는 것, 그것이 Diff(차이)입니다. Git의 코드 리뷰, 설정 파일 백업 비교, API 응답 대조 등 개발의 모든 장면에서 씁니다.

텍스트 차이(Diff) 읽는 법과 활용법: 행 단위·단어 단위 비교 이해하기

이 글에서는 Diff를 읽는 법의 기본과 행 단위·단어 단위의 차이, 현장에서 도움 되는 활용법을 구체적인 예제로 해설합니다.

Diff의 기본: + 와 - 의 의미

가장 일반적인 unified 형식의 Diff는 행 머리의 기호로 변경 내용을 나타냅니다.

 function greet(name) {
-  return "Hello " + name;
+  return `Hello ${name}`;
 }
  • -(빨강)로 시작하는 행은 삭제된 행
  • +(초록)로 시작하는 행은 추가된 행
  • 기호 없는 행은 변경되지 않은 행(맥락으로 표시)

즉 “어떤 행을 변경한” 경우, Diff에서는 “옛 행을 삭제하고 새 행을 추가했다”는 두 행으로 표현됩니다.

행 단위 vs 단어 단위

Diff에는 크게 두 가지 입도가 있습니다.

행 단위(line diff)

행마다 “같은지 다른지”를 판정합니다. 코드나 설정 파일 비교에 적합합니다. 다만 한 행 안의 한 글자만 바꿔도 “행 통째로 변경”으로 표시되어, 어느 단어가 바뀌었는지까지는 알 수 없습니다.

단어·문자 단위(word/char diff)

행 안의 어느 부분이 바뀌었는지까지 하이라이트합니다. 문장 교정이나 긴 한 행(압축된 JSON 등)의 비교에서 위력을 발휘합니다.

예를 들어 다음 변경을 봅시다.

변경 전: 가격은 부가세 별도 1000원입니다
변경 후: 가격은 부가세 포함 1100원입니다

행 단위라면 “이 행이 바뀌었다”까지만 알 수 있지만, 단어 단위라면 “별도→포함” “1000→1100”의 두 곳만 하이라이트되어 변경 부분이 한눈에 보입니다.

공백·줄바꿈 코드의 함정

Diff에서 “모든 행이 바뀌었다”고 표시되어 놀랄 때가 있습니다. 원인의 대부분은 보이지 않는 차이입니다.

  • 줄바꿈 코드: Windows의 CRLF와 Unix의 LF가 섞이면 모든 행이 차이로 취급됩니다.
  • 들여쓰기: 탭과 스페이스의 차이, 행 끝의 불필요한 스페이스.
  • 전각·반각 스페이스: 보기에는 거의 같아도 다른 문자입니다.

의미 있는 변경만 보고 싶을 때는 Diff 도구의 ‘공백 무시’ 옵션을 켜면 본질적인 차이만 골라낼 수 있습니다. 반대로 설정 파일 등에서 공백 자체가 중요한 경우에는 끈 채로 둡니다.

실무에서의 사용법

  • 코드 리뷰 전 셀프 체크: 커밋 전에 변경점을 다시 보고 지우지 못한 디버그 코드나 의도치 않은 변경을 발견.
  • 설정 파일 비교: 동작하는 환경과 동작하지 않는 환경의 .env나 설정 파일을 나란히 두고 차이에서 원인을 분리.
  • API 응답 대조: 기대하는 JSON과 실제 응답을 비교해 빠진 필드를 찾기(한 줄 JSON은 포맷팅 후 비교하면 보기 쉬움).
  • 문장 교정: 편집 전후의 원고를 단어 단위로 비교해 수정 부분을 확인.

기밀 데이터는 로컬에서 비교하기

설정 파일이나 로그에는 API 키나 개인정보가 포함될 수 있습니다. 이런 데이터를 외부 온라인 서비스에 붙여넣는 것은 피하는 게 좋습니다. 텍스트 차이 비교 도구는 브라우저 안에서 처리가 완결되며 입력 데이터를 서버로 보내지 않습니다. Network 탭을 연 상태로 비교해도 요청이 날아가지 않음을 확인할 수 있습니다.

자주 묻는 질문

한 줄만 바꿨는데 두 줄 분량의 차이가 나오는 이유는?

Diff는 “변경”을 “삭제+추가”로 표현하기 때문입니다. 원래 행이 -로, 새 행이 +로 표시되므로 한 줄 수정도 두 줄로 보입니다. 단어 단위 비교로 바꾸면 실제로 바뀐 부분만 하이라이트됩니다.

차이가 모든 행에 나옵니다

줄바꿈 코드(CRLF / LF)의 차이나 행 끝 공백, 들여쓰기의 탭·스페이스 혼재가 원인인 경우가 많습니다. ‘공백 무시’ 옵션을 시도하거나 사전에 줄바꿈 코드를 통일하세요.

큰 파일도 비교할 수 있나요?

브라우저 안에서 처리하는 도구는 극단적으로 큰 파일이면 동작이 무거워질 수 있습니다. 그럴 때는 비교하고 싶은 범위만 추출하거나, 명령줄의 diffgit diff를 병행하면 쾌적합니다. 일상적인 코드나 설정 파일 비교라면 브라우저 도구로 충분히 실용적입니다.