하위 디렉토리를 제외한 모든 것을 무시하도록 Git에게 어떻게 지시합니까?


218

bin하위 디렉토리 에서 발생하는 파일을 제외하고 저장소의 모든 파일을 무시하고 싶습니다 . 내 다음을 추가하려고했습니다 .gitignore.

*
!bin/*

그러나 원하는 효과는 없습니다. 내부에 새 파일을 bin/만들었지 만 git status여전히 shows를 수행 nothing to commit (working directory clean)합니다.

어떤 제안?


답변:


273

루트 파일과 루트 디렉토리를 무시한 다음 루트 bin 디렉토리를 무시합니다.

/*
/*/
!/bin/

이 방법으로 하위 디렉토리와 파일을 포함한 모든 bin 디렉토리를 얻을 수 있습니다.


25
어떤 이유로 이것은 나에게 일관되게 작동하지 않습니다. 나는 두 개의 라인을 가지고 /stuff/하고 !/stuff/specific/, 그러나 아직도 / / 재료 / 특정 무시
LB--

1
@ LB-- 비슷한 문제 git check-ignore -v가 있었고 그 이유는 다음과 같습니다~/.gitignore
gurney alex

@gurneyalex 로컬 리포지토리를 삭제하고 다시 복제하면 자체적으로 수정된다는 것을 알았습니다. 버그 여야합니다.
LB--

2
/ * /가 필요합니까?
Alex Baker

3
이것은 나를 위해 작동하지 않았습니다. !/bin/루트 .gitignore파일 에 추가 해야 했지만 추가로 /bin/.gitignore파일 을 추가해야했습니다 !*. 이러한 변경 중 하나만 수행해도 작동하지 않았습니다. 두 변경 사항을 결합한 후에 만 ​​작동했습니다.
Felipe Brahm

113

여기서 일부 디렉토리에서 하나의 " MY_SUPER_DUPER_TEMPLATE_directory " 디렉토리를 실행하는 모든 것을 무시하는 방법

구조 : / bitrix / templates / MY_SUPER_DUPER_TEMPLATE_directory

/*
!/bitrix
/bitrix/*
!/bitrix/templates
/bitrix/templates/*
!/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory
*.DS_Store
*.gitignore

1
이것은 내가 수정 한 라 라벨 공급 업체 패키지를 무시한 것에 대해 놀라운 일이었습니다! 감사합니다, 당신은 저에게 많은 두통을 저장했습니다
Maria Vilaró

이것이 최선의 답변으로 선택되어야합니다.
Bahman. A

63

목적지로가는 도중에 모든 것을 제외해야하지만 목적지를 포함해야합니다.

참고 : 이것은 제외 파일 (예 : .gitignore)이므로 논리가 반전됩니다. tsp 디렉토리를 제외한 모든 것을 무시하고 src 디렉토리를 제외한 tsp 디렉토리의 모든 것을 무시하십시오 ...

/*
!/tsp
/tsp/*
!/tsp/src
/tsp/src/*
!/tsp/src/*.h
!/tsp/src/*.cpp
!/tsp/src/data.txt
!/.gitignore

11
디렉토리를 포함하고 그 내용을 제외하고 원하는 하위 디렉토리 등을 포함하는 원칙에 대해 +1을 사용했습니다. 프로젝트 에서이 답변을 사용했습니다.
John Jesus

40

당신이 가진 유일한 문제는 bin 디렉토리 자체가 bin/*패턴 과 일치하지 않기 때문에 git은 bin디렉토리를 보지 못한다는 것입니다 .

떠오르는 두 가지 솔루션이 있습니다.

.gitignore :

*
!/bin/
!bin/*

또는

.gitignore :

*
!/bin/

bin/.gitignore :

!*

첫 번째 솔루션은 bin라는 하위 디렉토리 에있는 디렉토리의 파일을 무시하지 않으므로 두 번째 솔루션을 선호합니다 bin. 상황에 따라 중요하지 않을 수도 있습니다.


2
나를 위해 작동하지 않았다. 작동하려면 다음과 같은 .gitignore가 있어야합니다 : # Ignore everything * # But not these files... !/wp-content/ !/wp-content/plugins/ !/wp-content/plugins/my_plugin/ !/wp-content/plugins/my_plugin/* 주석에 블록 코드가 없습니까?
xlttj

1
타일러의 대답 은 더 나은 단일 파일 솔루션을 가지고 있습니다
Yarin

19

공식 git doc 에서 예제 중 하나는 다음과 같습니다.

특정 디렉토리 foo / bar를 제외한 모든 것을 제외하는 예 (/ *-슬래시없이 와일드 카드는 foo / bar 내의 모든 것을 제외합니다) :

$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar

: 선도 슬래시에 대한 설명은 때 gitignore에 선도적 인 슬래시를 사용하는 방법 .


백만 감사합니다, 이것은 나를 위해 일했습니다! 다른 사람들에게 여기서 줄의 순서가 중요하다는 것을 명심하십시오. 예를 들어 / foo / * 앞에! / foo / bar를 가질 수 없습니다.
Iamsodarncool

13

최신 GIT 버전에서 다음을 시도하십시오.

*
!*/
!/path/to/your/dir/**

마지막 줄은 실제로! / path / to / your / dir / **
이어야

@faham, 예, 방금 추가했습니다.
커비

11

더 좋은 방법은 슬래시로 패턴을 시작하여 각 패턴을 최상위 git 디렉토리에 고정시키는 것입니다.

/*
!/public_html
!/.gitignore

모든 파일을 무시하는 대신 최상위 파일 만 무시하고 디렉토리에있는 파일은 무시하지 않습니다.



5

이 모호한 자식 버그를 사용해보십시오.

!bin**/**

그것이 도움이되기를 바랍니다 :)

지원 문서 git 버그 샘플

추신 : 댓글을 달기 전에 먼저 시도하십시오.


0

나는 이것을 최근에해야했다.

*
!sub-dir/
!sub-dir/*

하나의 폴더를 제외하기 위해 왜 두 줄이 필요한지 잘 모르겠지만 이것이 나와 MacOS에 효과적이었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.