.gitkeep 이란?gitkeep 파일은 비어있는 디렉토리를 추적하여 보존하기 위한 파일이다.
기본적으로 Git에서는 빈 디렉토리를 추적하지 않으므로, 빈 디렉토리를 생성하고 커밋하려고 하면 커밋이 되지 않는다. 이 때, .gitkeep을 사용하면 빈 디렉토리도 커밋할 수 있게 된다.
.gitkeep: 비어 있는 폴더를 보존하기 위한 파일
참고로, gitlab에서 '새 디렉토리 만들기' 기능을 사용해 디렉토리를 만들면, 이 파일이 생성되어 빈 디렉토리를 만들 수 있다.
.gitkeep 파일 사용 방법# 1. 빈 디렉토리 생성
mkdir <폴더명>
# 2. 생성된 디렉토리 안에 .gitkeep 파일 추가
touch <폴더명>/.gitkeep
# 3. .gitkeep 파일을 git에 추가하고 커밋
git add <폴더명>/.gitkeep
git commit -m "빈 디렉토리 추가"
.gitkeep 파일을 일일이 수동으로 만들지 않고, 자동으로 생성하기 위한 쉘스크립트를 작성하려 한다.
고려할 기능은 다음과 같다.
- 파라미터로 대상 디렉토리 입력 받기 ( 실행 예시 :
$ ./gitkeep.sh <폴더명>)- 대상 디렉토리의 하위 디렉토리에서 빈 디렉토리 찾아내기
- 빈 디렉토리에
.gitkeep파일 생성하기 ( 실행 예시 :touch <폴더명>/.gitkeep)- 모든 하위 디렉토리에 대해 수행
find 명령어 활용#!/bin/sh
if [ $# -ne 1 ]
then
echo "Usage: $0 <directory name>"
exit 1
fi
find $1 -empty -type d -exec touch {}/.gitkeep \;
#!/bin/sh
# Define Function
iterate_dir()
{
filelist=`ls -A $1`
for file in $filelist
do
filelist=`ls -A $1/$file`
if [ "$filelist" = "" ];
then
echo "Create $1/$file/.gitkeep"
touch $1/$file/.gitkeep
elif [ -d $1/$file ]
then
iterate_dir $1/$file
fi
done
}
if [ $# -ne 1 ]; # Check the Number of Parameters (1)
then
echo "Usage: $0 <target path>"
exit 1
fi
# Call Function
iterate_dir $1
| Before | After |
|---|---|
![]() | ![]() |