설정 파일을 수정하고 나서 정확히 어느 줄이 바뀌었는지 확인하고 싶거나, 문서의 두 버전 중 무엇이 달라졌는지 눈으로 찾기 힘들 때가 있습니다. 이 글에서는 diff(차분 비교) 도구가 정확히 무엇을 하는지, 어떤 상황에서 유용한지, 그리고 결과를 어떻게 읽는지 정리합니다.
diff 도구가 하는 일
diff(차분 비교) 도구는 두 개의 텍스트를 줄(line) 단위로 비교해서 어느 줄이 그대로 유지됐고, 어느 줄이 추가되거나 삭제됐는지를 찾아주는 도구입니다. 내부적으로는 LCS(최장 공통 부분 수열, Longest Common Subsequence) 같은 알고리즘을 이용해 두 텍스트에 공통으로 들어 있는 줄들을 최대한 찾아내고, 거기서 벗어나는 줄들을 '추가됨' 또는 '삭제됨'으로 표시합니다. 한 줄 안에서 단어 하나만 바뀌어도 그 줄 전체가 '변경'으로 처리되는데, 이는 비교 단위가 줄이기 때문입니다(정확히 어떤 단어가 바뀌었는지까지 보려면 별도의 단어 단위 diff가 필요합니다). 결과적으로 원본(A)과 비교 대상(B)을 나란히 놓고 눈으로 대조하는 것보다 훨씬 빠르게 실제 변경 지점만 골라낼 수 있습니다.
언제 유용할까
diff는 텍스트로 표현되는 거의 모든 것의 버전 비교에 쓸 수 있습니다. 가장 흔한 예는 설정 파일입니다. nginx 설정이나 .env 파일을 수정한 뒤 배포 전에 원래 파일과 비교하면 의도한 줄만 바뀌었는지, 실수로 다른 옵션을 건드리지 않았는지 바로 확인할 수 있습니다. 문서 작업에서도 유용한데, 계약서나 기획서의 개정 전후 버전을 비교하면 어느 조항·문단이 추가되거나 삭제됐는지 처음부터 끝까지 읽지 않고도 파악할 수 있습니다. 코드를 다룰 때는 커밋하기 전 변경 사항을 미리 훑어보는 용도로도 쓰입니다. Git 같은 버전관리 시스템이 diff를 보여주긴 하지만, 저장소로 관리되지 않는 텍스트(메모, 임시 스크립트, 외부에서 받은 파일 등)를 비교할 때는 별도의 diff 도구가 필요합니다.
결과를 읽는 법
diff 결과는 보통 줄 앞의 기호나 색으로 변경 종류를 구분합니다. 흔히 쓰이는 표기는 원본에만 있고 비교 대상에는 없는 '삭제된 줄'을 -(마이너스) 기호와 함께 빨간색 계열로, 비교 대상에만 새로 생긴 '추가된 줄'을 +(플러스) 기호와 함께 초록색 계열로 표시하는 방식입니다. 아무 표시가 없는 줄은 두 텍스트에 동일하게 존재하는, 즉 변경되지 않은 줄입니다. 한 줄의 내용이 일부만 바뀐 경우는 대개 '삭제됨(이전 내용)'과 '추가됨(새 내용)' 두 줄로 나란히 표시되어, 이전 값과 새 값을 한눈에 비교할 수 있습니다. 이런 규칙만 알면 수십, 수백 줄짜리 파일이라도 실제로 바뀐 부분만 빠르게 짚어낼 수 있습니다. 텍스트를 두 칸에 붙여넣기만 하면 이렇게 추가·삭제된 줄을 색으로 구분해 즉시 보여주는 도구를 쓰면 일일이 대조하는 수고를 덜 수 있습니다.
🆚 이 작업, 도구로 바로 해보세요
두 텍스트 파일 차이 비교하는 방법 — 코드·문서 버전 간 차이를 빠르게 찾는 법