텍스트 비교
두 텍스트를 좌우 또는 통합 형식으로 비교. 단어 단위 강조, 공백·대소문자 처리, 패치 복사 지원.
비교할 두 버전의 텍스트를 붙여넣으세요
이 도구가 하는 일
비교는 하나의 물음에 정확히 답합니다: 한 텍스트를 다른 것으로 바꾸려면 무엇이 바뀌어야 하는가? 변경 전을 왼쪽에, 더 새로운 버전을 오른쪽에 붙여넣으면, 이 도구는 삭제된 모든 줄, 추가된 모든 줄, 그리고 — 바뀐 줄 안에서는 — 달라진 단어를 정확히 강조합니다. git이 모든 커밋에서 답하는 것과 같은 물음을, 같은 계열의 알고리즘으로, 전적으로 브라우저 안에서 계산합니다.
그 마지막 부분은 대부분의 도구보다 비교 도구에 더 중요합니다: 사람이 비교하는 것은 사적인 경향이 있습니다 — 운영 설정의 두 버전, 최적화 전후의 쿼리, 어제는 되던 응답 본문과 오늘 실패하는 것. 여기서는 그것들이 기기 밖으로 나가지 않습니다.
좌우 나란히냐 통합이냐
두 보기는 같은 비교를 다르게 배치합니다. 좌우 나란히는 변경 전을 왼쪽에, 변경 후를 오른쪽에 두고 맞는 줄을 정렬합니다 — 문서 개정을 읽는 자연스러운 방식입니다. 통합은 그것들을 한 열에 번갈아 놓고 삭제에는 빼기를, 추가에는 더하기를 앞에 붙입니다 — git log와 코드 리뷰가 쓰는 형식으로, 더 간결하고 변경이 드물 때 낫습니다. 두 보기 모두 여백에 변경 전 줄 번호를 표시하므로, 여기서의 발견이 곧바로 파일로 이어집니다.
비교를 계산하는 법
이 도구는 Myers 차이 알고리즘을 구현합니다. 1986년에 발표되었고 오늘도 git의 기본입니다. 최단 편집 스크립트를 찾습니다: 한 텍스트를 다른 것으로 바꾸는 줄 삭제와 삽입의 최소 수입니다. 그 최소성이야말로 비교를 읽기 좋게 만드는 것입니다 — 변경 뒤 동기화를 잘 되찾지 못하는 순진한 비교는 블록 전체를 치환으로 보고하지만, Myers는 실제로 움직인 두 줄을 정확히 가리킵니다.
줄이 먼저 비교되고, 다음으로 바뀐 각 줄 쌍이 단어 수준에서 다시 비교되어 강조를 냅니다. 정직한 한계 하나: 두 텍스트에 공통점이 거의 없을 때 최소 스크립트 탐색은 브라우저 탭이 써야 할 것보다 많은 메모리를 요하므로, 편집 거리 2000을 넘으면 이 도구는 모든 것을 치환으로 표시하는 방식으로 물러납니다 — 조용히가 아니라 알림과 함께 그렇게 합니다.
공백과 대소문자 옵션
많은 차이가 진짜지만 무관합니다. 탭에서 공백으로 다시 들여쓴 파일, 편집기가 더한 끝의 공백, 대소문자를 다시 바꾼 키워드 — 모두 진짜 변경이지만, 알고 싶은 것이 로직이 바뀌었는지라면 모두 잡음입니다. 두 체크박스가 흔한 경우를 다룹니다: 하나는 각 줄 가장자리의 공백을 제쳐 두고, 다른 하나는 글자 대소를 제쳐 둡니다. 그것들은 무엇을 변경으로 셀지에만 영향을 줍니다 — 표시는 늘 붙여넣은 그대로 각 줄을 보입니다.
- 가장자리 공백 무시 — 각 줄의 앞뒤 공백과 탭이 비교 전에 떨어지므로, 들여쓰기만의 변경이 바뀐 줄로 표시되지 않습니다. 줄 안쪽 공백은 여전히 셉니다.
- 대소문자 무시 — 대소만 다른 줄과 단어가 같은 것으로 비교됩니다. SQL 키워드, HTTP 헤더 이름, 그 밖의 대소를 구분하지 않는 문맥에 유용합니다.
복사할 수 있는 패치
복사 버튼은 비교를 통합 diff 형식으로 냅니다 — 코드 변경의 공용어입니다. 변경의 각 블록(헝크)은 그것이 덮는 줄 번호를 알리는 @@ 헤더로 시작하고, 삭제된 줄은 빼기로, 추가된 줄은 더하기로 시작하며, 변경 없는 문맥 줄 몇 개가 각 헝크를 둘러싸 파일이 조금 밀려도 변경을 찾을 수 있게 합니다.
--- a +++ b @@ -1,3 +1,3 @@ server: - port: 8080 + port: 9090 timeout: 30
이 텍스트는 티켓이나 코드 리뷰에 붙여넣거나, 동료에게 메일로 보내거나, 기계적으로 적용할 수 있습니다: 파일에 저장하면 "git apply"나 Unix patch 명령이 변경을 변경 전에 재생합니다. 알아 둘 만한 세부 하나: 줄바꿈으로 끝나지 않는 파일은 그 패치에 "\ No newline at end of file" 표시가 붙습니다 — 이 도구는 그 동작을 재현합니다. 끝의 줄바꿈 누락은 진짜 차이이고, 아닌 척하면 적용되지 않는 패치가 되기 때문입니다.
자주 묻는 질문
- 두 텍스트가 같아 보이는데 변경이 보고되는 이유는 무엇인가요?
- 차이는 아마 눈에 보이지 않습니다: 끝의 공백, 탭과 공백의 차이, 마지막 줄 뒤의 줄바꿈 누락입니다. "가장자리 공백 무시"를 켜면 앞의 두 가지를 제외할 수 있습니다. 끝의 줄바꿈 차이는 여전히 보고됩니다 — git도 그 no-newline 표시와 함께 보고합니다 — 바이트 수준의 차이는 글자가 보이지 않아도 진짜이기 때문입니다.
- 아주 다른 텍스트가 하나의 큰 치환으로 표시되는 이유는 무엇인가요?
- 최소 차이를 찾는 데는 텍스트가 얼마나 다른지의 제곱에 비례하는 메모리가 듭니다. 약 2000줄 변경이라는 편집 거리를 넘으면 이 도구는 거친 전부-치환 보기로 전환하고 알림을 보입니다. 같은 문서의 두 버전으로는 결코 여기 닿지 않고, 무관한 두 파일을 비교하면 닿습니다.
- 복사한 패치를 어떻게 적용하나요?
- 파일에 저장하고 저장소에서 "git apply thefile.patch"를 실행하거나, 고전적인 Unix 도구로 "patch original.txt thefile.patch"를 실행하세요. 패치는 변경 전 텍스트 그 자체에 대해 생성되므로, 대상이 밀리지 않은 한 깔끔하게 적용됩니다.
- 제 텍스트가 업로드되나요?
- 아니요. 비교는 전적으로 브라우저 안에서 돕니다 — 두 텍스트를 볼 수 있는 서버가 없습니다. 그것이 클라이언트 쪽에서 하는 뜻입니다: 설정, 자격 증명, 운영 데이터를 머신에서 내보내지 않고 비교할 수 있습니다.