프로젝트 중에는 경우에 따라 빈 폴더가 있어야 하는 경우가 있습니다. 예를 들어 파일 업로드/다운로드 기능 개발 시 uploads/ 등의 비어 있는 공간을 만들고 이곳에 경로를 잡아 자원을 관리하기도 합니다. 소스 코드를 GitHub로 관리하고 있다면 원격 저장소에 이 정적 디렉터리 안의 샘플 파일까지 커밋할 필요는 없습니다. 하지만 안의 내용을 다 지우고 아무리 Push를 진행하더라도 Git은 빈 디렉터리를 인식 대상에서 제외합니다.
그런데 나는 꼭 빈 디렉터리를 원격 저장소에 함께 올리고 싶다면? 해결책이 전혀 없는 건 아닙니다. 바로 .keep이라는 임시 숨김 파일을 만들어서 넣어주는 방법인데요. 파일 이름에 정해진 규칙은 없지만, 관례상 .keep 또는 .gitkeep을 많이 사용하는 것 같습니다. 한번 스크린샷과 함께 알아보도록 하겠습니다!
작업할 디렉토리에 .keep 파일 생성
본 예제는 D:\git-repositories\wespace\wespace-backend 위치에 텅 빈 /user 디렉터리를 만들어보겠습니다.
Windows 사용자라면 마우스로 빈 폴더를 바로 만들어주시면 되고, 난 더 멋지게 진행하고 싶다면 Git Bash를 실행하여 간단한 명령어로도 가능합니다.
혹시 Git Bash가 무엇이고 어떻게 설치하는지 궁금하다면 여기를 클릭해주세요.
그다음, 생성한 user/ 디렉터리로 안에서 다음과 같은 명령어를 입력합니다.
touch .keep
.keep 파일이 정상적으로 생성되었는지 확인해봅니다.
만약 숨긴 파일이 안보일 경우 파일 탐색기의 보기 탭을 클릭하여 숨김 항목에 체크를 해주면 됩니다.
.gitignore에 .keep 파일 추가
.gitignore는 간단하게 말해서 git이 추적(track)할 필요 없는 목록들을 기술한 설정 파일입니다.
프로젝트에 .gitignore 파일이 있다면 실행하여 다음과 같이 설정을 추가해줍니다.
![빈 디렉터리 이름]/.keep
! 는 여기서 뒤에 나오는 디렉터리 혹은 파일을 ignore 대상에서 제외시키겠다는 의미로 이해하시면 됩니다.
보다 자세한 내용이 궁금하다면 개발 지식의 창구인 stackoverflow 질문을 확인해주세요.
이것 역시 어썸하게 터미널 명령어로 작업하고 싶다면 아래와 같이 해주시면 됩니다.
만약 git add 명령어가 안될 경우 -f(force) 옵션을 함께 달아준다면 이상 없이 tracked 상태로 갈 수 있습니다.
Git Bash에서 원격 저장소로 진행되는 메커니즘이 궁금하다면 여기를 확인해주세요.
# .gitignore에 ignore 제외 대상 추가
echo '!user/.keep' >> .gitignore
# .keep을 만들어 놓은 폴더로 이동
cd user/
# .keep 추가
git add -f .keep
# .keep 커밋
git commit -m 'Keep user directory'
# 원격 저장소로 push
git push origin master
원격 저장소에 정상적으로 올라갔는지 확인
위에서 남겼던 커밋 메시지에 해당하는 원격 저장소를 찾아가봅시다.