가장 많이 찬성 된 답변으로 제시된 솔루션은 정확하지 않으며 쉽게 입증 할 수 있습니다.
업로드에있는 모든 것을 무시하는 것으로 시작 / * :
mkdir -p uploads/rubbish/stuff/KEEP_ME
touch uploads/a uploads/rubbish/a uploads/rubbish/stuff/a uploads/rubbish/stuff/KEEP_ME/a
echo '/uploads/*' >> .gitignore
git init
git add .
git commit -m "Initial commit"
이제 위와 같이 무시 된 항목의 상위 디렉토리를 무시합니다.
echo 'uploads/rubbish/stuff/KEEP_ME/' >> .gitignore
echo 'uploads/rubbish/stuff/KEEP_ME/*' >> .gitignore
git status -u
추적되지 않은 파일을 표시하지 않습니다.
작동 시키려면 uploads/
트리 아래의 모든 파일 ( uploads/**/*
, 최상위 수준뿐만 아니라) 을 무시한 uploads/*
다음 유지하려는 트리의 모든 상위 디렉토리를 추가해야합니다.
echo '/uploads/**/*' > .gitignore
echo '!/uploads/rubbish/' >> .gitignore
echo '!/uploads/rubbish/stuff' >> .gitignore
echo '!/uploads/rubbish/stuff/KEEP_ME' >> .gitignore
echo '!/uploads/rubbish/stuff/KEEP_ME/*' >> .gitignore
git status -u
다음을 제공합니다.
On branch master
...
Untracked files:
(use "git add <file>..." to include in what will be committed)
uploads/rubbish/stuff/KEEP_ME/a
우리가 사용했다면 uploads/*
에 .gitignore
위의 잘, 그래서 예를 들어로서, 모든 중간 파일이 포함되었을 것이다 uploads/rubbish/a
위의 상태 명령에 표시됩니다.