PARA/03_Resources/R001_개발_레퍼런스(참고문서)/트러블슈팅/트러블 슈팅 - git log 한글 깨질때 문제 해결.md

트러블 슈팅 - git log 한글 깨질때 문제 해결

개요

git log 실행 시 아래와 같이 한글이 깨짐

      1 commit f9868e4521ea48f28cef55ba8c1c0e20f323a9d5 (HEAD -> feature/MC-437, origin/feature/MC-437)
      2 Author: �<9D>��<91><90>�<97><8C> <dhlee@atommerce.com>
      3 Date:   Fri Nov 8 17:21:08 2024 +0900
      4  
      5     MC-437 �<83><80>�<9C>�<84> �<86><8C>�<8A>� �<98>�<98><81>
      6  
      7 commit 5abd49366a1faf1c3cf04e53c55d433be03e8b8b
      8 Author: �<9D>��<91><90>�<97><8C> <dhlee@atommerce.com>
      9 Date:   Thu Nov 7 16:09:51 2024 +0900
     10  
     11     MC-437 �<88>�<9D>��<95><84>� �<88><98>�<95>
     12  
     13 commit 46ed174514944248c25a26bae9bc2c0fcaf474a6
     14 Merge: e03eace 79c924c
     15 Author: �<9D>��<91><90>�<97><8C> <dhlee@atommerce.com>
     16 Date:   Thu Nov 7 07:00:29 2024 +0000
     17  
     18     Merged in feature/monorepo-japan (pull request #232)
     19     
     20     CSR �<88><98>�<95>
     21     
     22     Approved-by: �<9C>민�<84><9C>
     23  
     24 commit 79c924c5452e1b7da56054c5664bcf4db9f1eba6 (origin/feature/monorepo-japan, feature/monorepo-japan)
     25 Author: �<9D>��<91><90>�<97><8C> <dhlee@atommerce.com>
     26 Date:   Wed Nov 6 11:09:24 2024 +0900
     27  
     28     CSR �<88><98>�<95>
     29  
     30 commit e03eace7000a2818cd2e3383ff1583efb26ec1b3 (origin/MC-437-1)
     31 Merge: 82d301f 2cb67e2
     32 Author: �<9D>��<91><90>�<97><8C> <dhlee@atommerce.com>
     33 Date:   Tue Nov 5 07:01:13 2024 +0000

뭐가 문제인지 파악 후 수정 필요

원인 파악 및 해결

  1. 원인 : 터미널의 문자 인코딩 설정과 출력 인코딩 설정이 맞기 않기 때문
  2. git에서 명시적으로 UTF-8 인코딩 사용하도록 수정
# 로그 출력 인코딩을 UTF-8로 설정
git config --global i18n.logOutputEncoding utf-8
 
# Git 커밋 메시지 입력 인코딩을 UTF-8로 설정
git config --global i18n.commitEncoding utf-8
 
이렇게 했는데도 안됨
  1. 터미널의 환경변수 확인
git config --global i18n.logOutputEncoding utf-8 
echo $LANG ko_KR.UTF-8
 
이렇게 했는데도 안됨.
  1. git의 출력 페이저 설정하여 UTF-8 강제(해결 완료)
git config --global core.pager 'less -R'
 
이렇게 했는데도 안됨.
  1. 환경 변수로 UTF-8 강제 설정
export LESSCHARSET=utf-8
 
해결 완료

결과 및 정리

1. Git 로그 출력 시 페이저(pager) 사용

Git에서 git log와 같이 긴 출력 결과를 볼 때, 한 번에 모든 내용을 출력하지 않고 **페이저**라는 도구를 사용하여 화면에 맞춰 페이지 단위로 보여준다.
기본적으로 less라는 프로그램이 Git의 페이저로 설정되어 있다.

2. 페이저 less가 UTF-8 인코딩을 인식하지 못함

Git과 터미널의 인코딩 설정을 UTF-8로 맞춰도, 페이저 less가 인코딩 설정을 올바르게 인식하지 못하면 출력 결과에서 한글이 깨질 수 있다. Git과 터미널 환경에서는 UTF-8 인코딩을 사용하더라도 less는 별도로 인코딩을 설정해 주지 않으면 시스템 기본값을 사용하게 된다.

3. 환경 변수를 통해 less의 인코딩 설정 강제 필요

페이저 less가 UTF-8 인코딩을 인식하도록 환경 변수를 통해 강제 설정해 줄 필요가 있었다.
이 문제는 특히 터미널 환경에서 한글을 포함한 비영어권 언어를 사용하는 경우 자주 발생한다고 한다.

댓글

첫 번째 댓글을 남겨보세요.