CONCLUSION

두 파일은 화면에 같은 두 줄을 표시했지만 LF 표본은 11바이트, CRLF 표본은 13바이트였고 SHA-256도 달랐습니다. 해시 차이를 곧바로 문장 변경으로 해석하면 안 됩니다.

확인 방법

  1. UTF-8 ASCII 범위 문자로 alpha와 beta 두 줄을 만들었습니다.
  2. 한 파일은 줄 끝마다 LF 1바이트, 다른 파일은 CR과 LF 2바이트를 기록했습니다.
  3. macOS wc와 shasum으로 파일 크기와 SHA-256을 측정했습니다.

2바이트 차이가 파일 정체성을 바꿨다

LF 파일은 11바이트이고 SHA-256은 e49c81e2…d0d78ee였습니다. CRLF 파일은 줄마다 CR이 하나씩 추가돼 13바이트이고 SHA-256은 98ab4d3a…b6fc80이었습니다.

일반 편집기에서는 둘 다 alpha와 beta 두 줄로 보입니다. 하지만 백업 비교, 배포 검증, 디지털 서명처럼 바이트 동일성을 묻는 과정에서는 서로 다른 파일입니다.

같은 두 문장을 다른 줄바꿈으로 저장한 결과
표본줄바꿈크기SHA-256 앞 8자리
lf.txtLF11 Be49c81e2
crlf.txtCRLF13 B98ab4d3a

Git이 줄바꿈을 정규화하는 이유

Git은 text와 eol 속성에 따라 저장소 내부와 작업 폴더의 줄바꿈을 다르게 처리할 수 있습니다. 팀원이 파일을 바꾸지 않았다고 생각해도 설정 차이로 전체 줄이 변경된 것처럼 보일 수 있습니다.

협업 저장소에서는 .gitattributes로 정책을 명시하고, 이미 들어간 파일을 한 번에 바꾸기 전에 별도 브랜치에서 영향 범위를 확인하는 편이 안전합니다.

비교 목적을 먼저 정한다

문장 의미가 같은지를 보려면 줄바꿈을 정규화한 뒤 텍스트 비교가 적합합니다. 전달받은 원본 바이트가 같은지를 입증하려면 정규화하지 않은 원본 해시를 보존해야 합니다.

확인한 1차 자료

작성·검수

파일 처리 실험을 직접 재현하고, 측정값과 해석의 경계를 검수합니다. 전문 감정이나 법률 판단을 대신하지 않습니다.