2013-06-12 9 views
2

나는 모두 을 깔끔하게 정리하고 싶습니다. 으로 무시 된 파일입니다.git clean -dX가 무시한 디렉토리를 지우지 않는 이유는 무엇입니까?

나는 git clean -dX이 확실한 해결책이라고 생각하지만 아무것도하지 않습니다 :

# Set up test directory 
mkdir git-test && cd git-test 
git init && touch x && git add x && git commit -m Initial 

mkdir -p folder1/folder2/ 
touch folder1/folder2/file 

echo "folder2/" >> .gitignore 

git clean -fdX  # Does nothing 

folder1/folder2/이 제거되지 않습니다?

The docs say

  • **/foo 일치하는 파일 또는 어디서나 디렉토리 foo, 패턴과 같은 것을 foo

나의 folder2/ 패턴이하는 경기 /folder1/folder2/-X가 청소해야한다.

무슨 일 이니?

+0

테스트 설치에'touch folder1/a'을 추가해야합니다. 그렇지 않으면'folder1'이 제거됩니다. – kirelagin

+0

이것은'git'의 "디렉토리"개념이없는 것과 관련이있는 것으로 보입니다. 적어도 나를 위해 그것은 전체'folder1'을 제거합니다. 하지만 'touch folder1/a'을 터치해도 아무 것도 제거하지 못합니다. 'git add folder1/a' 명령을 실행하면 예상대로'folder2'가 제거됩니다. – kirelagin

+1

요약하면 버그 (또는 적어도 부적절한 문서) 인 것 같습니다. – kirelagin

답변

1

사용하는 Git의 버전은 무엇입니까? 이 버그 (Bug: git ls-files and ignored directories)가 실행되었을 수 있습니다.

이 버그는 v1.7.11.2에서 fixed입니다. release notes에서 : 제외로 인덱스를 걷는 동안은 주요 경로의 배제에주의를 지불하지 않았다으로

  • "git ls-files --exclude=t -i는"t/에서 아무것도 생각하지 않았다. excluded()의 다른 두 사용자도 업데이트됩니다.
+0

이 질문에 대한 설명에서 내가 설명한 모든 것은 1.8.1.5에있었습니다. – kirelagin

+0

git 1.7.9.5를 사용하고있었습니다. 1.8.2.1을 사용하는 동안 나의 예제 스크립트 ('folder1'을 지울 것입니다)에서 차이를 만들지 만'folder1/file'을 터치하면 차이가 없으므로'folder2'를 제거하지 않은 원래의 문제는 지속됩니다. – nh2

관련 문제