Couldn't checkout ... invalid path ...
in Debugging
Git 파일명 특수문자에 의한 오류. OS 호환성에 주의할 것
❗ 증상
알고리즘 스터디를 진행하며 발생한 오류다.
master
브랜치를 관리하고 있는데, 스터디원들의 운영체제가 모두 달라 발생한 현상이다.
Windows
의 파일 시스템(NTFS)
에서는 파일명에 일부 특수문자를 사용할 수 없다.
반면 MacOS
의 파일 시스템은 파일명에 특수문자를 사용 할 수 있다.
그래서 이런 특징들로 인해 도대체 무슨 문제가 발생하느냐?
윈도우에서 git pull/checkout
을 하려는데 원격 리파지토리에서 내려받으려는 파일명이 특수문자로 작성돼있는 경우
윈도우에선 파일명에 특수문자가 있을 수 없다는 제약으로 인해 해당 파일을 가져올 수 없다는 에러가 발생한다.
✅ 해결
세가지 방법이 있다.
- 가장 좋은 방법으로 파일명에 특수문자를 사용하지 않는다.
- 모든 구성원이 동일한 OS환경을 갖춘다. (어렵다)
- 윈도우에서 아래 명령어를 입력한다.
git config core.protectNTFS false
git checkout -f HEAD
이 방법은 NTFS
를 비활성화 시키는 방법인데,
윈도우에서 pull/checkout
을 할 때 파일명에 특수문자가 포함된 파일을 제외하고 가져와버린다.
가장 간단하지만 파일이 손상될 수 있으므로 정말 추천하지 않는 방법이다.