윈도우에서 만들 수 없는 파일 이름(예: ?, \, * 등이 포함됨)이 change list에 포함된 경우, 체크아웃 또는 병합에 실패하게 됨. 예를 들어 .\target\cron-utils.log와 같은 파일은 리스트에 포함만 되어도 체크아웃을 실패하게 된다.
이런 경우, 실수를 한 사람이 파일을 삭제 하고 커밋, 푸시를 하더라도 다른 윈도우 사용자는 파일을 받을 수 없다. 해결 방법은 해당 파일이 쓸모 없다는 가정하에, sparsecheckout 옵션을 활성화 시키는 것이다. sparse checkout은 말 그대로 체크아웃 시 듬성듬성하게 하겠다는 것으로, 내가 선택한 파일만 받겠다는 것이다. 절차는 아래와 같다.
1. .git/config 파일을 편집하여 "[core]" 섹션에 다음을 추가한다.
sparsecheckout = true
2. .git/info/sparse-checkout 파일을 생성하고 다음을 추가한다.
*
빼야할 파일 이름 규칙
3. 다시 checkout을 시도한다(git kraken 등 GUI를 사용한다면 재시작 필요).
이 글은 여기서 참고했다.