요약
windows powershell 로 git 터미널을 사용하다 보면 여러 상황에서 에러를 맞이하게 됩니다.
저같은 경우는 .gitignore을 설정하기 위해 터미널 명령어 echo를 통해 작성했으나
파워쉘에서 텍스트 인코딩이 utf-8이 아닌 utf-16lf로 기본 설정이 되어있어
5시간동안 고민을 하며 무엇이 문제인지 구글링을 해야만 했습니다.
결과적으로 빠른 해결책은 .gitignore 파일은 utf-8로 작성이 되어져야 인식을 하기 때문에
파워쉘에서의 설정을 변경해주면 됩니다. (posh-default: utf-16lf)
그러기 위해 파워쉘에서 기본 설정을 변경해줘야 합니다.
문제 상황
저는 windows 운영체제를 사용중이고, 터미널은 파워쉘을 사용하고 있습니다.
파일을 아예 새로 만든 상황에서는 git 캐시 문제를 다룰 필요가 전혀 없습니다.
저는 mkdir로 새로 파일을 만들고 그 파일 내에서 git init, .gitignore, a.txt, b.txt, c.txt, style.css를 만들었습니다.
그리고 .gitignore은 echo 명령어로 만들었기 때문에 .gitignore 파일에는 *.txt 가 작성되어져 있습니다.
그 이후 git status를 하면 당연히 자연스럽게 확장자명이 .txt인 파일들은 모두 Untracked files 에서 사라져 안보일 줄 알았으나 계속 로그로 출력이 되는 것입니다.
이는 .gitignore 파일이 문제가 있다는 뜻인데, 저는 github desktop을 이용해서 b.txt를 한번 ignore를 시켜주었더니
이런 괴상한 문구가 들어가있는 겁니다.
아 utf가 깨졌구나 (다르게 설정이 되었구나) 라고 인지하고 vs코드에서
직접 utf-8로 설정해 다시 git status를 찍어주었더니 정상적으로 출력이 되었습니다.
늘 vs코드에서 직접 수정할 순 없기 때문에 이 상황에 대한 해결방법으로
powershell의 텍스트 인코딩 설정을 바꿔 보도록 하겠습니다.
해결방법 (파워쉘 기본 인코딩 변경)
해결방법은 간단합니다.
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
$PSDefaultParameterValues['*:Encoding'] = 'utf8'
위의 두 개의 명령어를 각각 터미널에 입력해주시면 됩니다.
그렇게 되면 파워쉘의 기본 매개변수 값 설정에 utf8로 적용이 되기 때문에
파워쉘에서의 텍스트 인코딩 문제를 해결할 수 있습니다.
Reference