질문자 :Ben Hymers
다음과 같은 디렉토리 구조가 있습니다.
.git/ .gitignore main/ ... tools/ ... ...
기본 및 도구 내부, 그리고 모든 수준의 다른 디렉토리에는 무시하고 싶은 'bin' 디렉토리가 있을 수 있습니다. .gitignore에서 이러한 각 패턴을 시도했지만 어느 것도 작동하지 않습니다.
/**/bin/**/* /./**/bin/**/* ./**/bin/**/* **/bin/**/* */bin/**/* bin/**/* /**/bin/* #and the others with just * at the end too
아무도 나를 도울 수 있습니까? 첫 번째 패턴(작동해야 한다고 생각하는 패턴)은 다음과 같이 하면 잘 작동합니다.
/main/**/bin/**/*
그러나 모든 최상위 디렉토리에 대한 항목을 갖고 싶지 않으며 새 디렉토리를 추가할 때마다 .gitignore를 수정하고 싶지도 않습니다.
이것은 최신 msysgit을 사용하는 Windows에 있습니다.
편집: 한 가지 더, 이름에 하위 문자열 'bin'이 있는 파일과 디렉토리가 있습니다. 나는 그것들을 무시하고 싶지 않습니다. :)
버전 1.8.2 이전에는 **
.gitignore
에서 특별한 의미가 없었습니다. 1.8.2부터 git은 **
를 지원하여 0개 이상의 하위 디렉토리를 의미합니다( 릴리스 노트 참조).
디렉토리 트리의 현재 레벨 아래에서 bin이라는 모든 디렉토리를 무시하는 방법 .gitignore
파일을 사용하는 것입니다.
bin/
man
페이지에는 유사한 패턴을 사용하여 foo
라는 디렉토리를 무시하는 예가 있습니다.
편집: git 인덱스에 더 이상 추적하고 싶지 않은 bin 폴더가 이미 있는 경우 명시적으로 제거해야 합니다. .gitignore
패턴과 일치한다고 해서 이미 추적 중인 경로 추적을 중단하지 않습니다. 인덱스만( --cached ) 재귀적으로( -r ) 폴더 제거( rm )를 실행합니다. 루트 bin 폴더에 대한 명령줄 예:
git rm -r --cached bin
CB Bailey꿈의 .gitignore
는 다음과 같습니다.
bin/
최고 수준에서.
Michael Krelin - hackergit 초보자를 위해 언급할 가치가 있다고 생각합니다.
이미 체크인한 파일이 있고 이를 무시하려는 경우 나중에 규칙을 추가해도 Git은 파일을 무시하지 않습니다 . 이러한 경우 터미널에서 다음 명령을 실행하여 먼저 파일의 추적을 해제해야 합니다.
git rm --cached
따라서 .gitignore를 편집한 후 로컬 저장소(이미 존재하는)의 일부 디렉토리를 무시하도록 추가하려면 루트 디렉토리에서 이것을 실행하고 싶습니다.
git rm --cached -r . git add .
기본적으로 로컬 리포지토리를 '새로 고침'하고 무시된 파일을 언스테이징합니다.
보다:
http://git-scm.com/docs/git-rm ,
https://help.github.com/articles/ignoring-files/
plancys**
전에는 제대로 작동하지 않았지만 git 1.8.2(2013년 3월 8일) 이후로 명시적으로 언급되고 지원되는 것 같습니다.
.gitignore
및 .gitattributes
파일 의 패턴은 0개 이상의 하위 디렉토리 수준과 일치하는 패턴으로 **/
가질 수 있습니다 .
예 : " foo/**/bar
" "일치하는 bar
"에서 " foo
"자체 또는 "의 하위 디렉토리에 foo
".
귀하의 경우 이는 이제 다음 줄이 지원될 수 있음을 의미합니다.
/main/**/bin/
VonCwisbucky여기에 언급된 것을 보지 못했지만 대소문자를 구분하는 것 같습니다. /Bin으로 변경하면 예상대로 파일이 무시되었습니다.
Cory1단계: .gitignore 파일에 다음 내용을 추가합니다.
# User-specific files *.suo *.user *.userosscache *.sln.docstates # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ bld/ [Bb]in/ [Oo]bj/ # Visual Studio 2015 cache/options directory .vs/
2단계: 적용되는지 확인
문제가 여전히 존재하는 경우 .gitignore 의 설정이 원래 추적되지 않은 파일만 무시할 수 있기 때문입니다. 일부 파일이 이미 버전 관리 시스템에 포함된 경우 .gitignore 를 수정하는 것은 유효하지 않습니다. 이 문제를 완전히 해결하려면 Git Bash 또는 패키지 관리자 콘솔 (아래 스크린샷 참조)을 열어 저장소 루트 폴더에서 다음 명령을 실행해야 합니다.
git rm -r --cached . git add . git commit -m "Update .gitignore"
그러면 문제가 완전히 해결됩니다.
Bravo Yeung[Bb]in
이 문제를 해결하지만... 여기에서 무시해야 할 더 광범위한 목록(GitExtension의 샘플 목록):
#ignore thumbnails created by windows Thumbs.db #Ignore files build by Visual Studio *.user *.aps *.pch *.vspscc *_i.c *_p.c *.ncb *.suo *.bak *.cache *.ilk *.log [Bb]in [Dd]ebug*/ *.sbr obj/ [Rr]elease*/ _ReSharper*/
JaiderJochen van Wylick말 그대로 어떤 답변도 실제로 효과가 없었습니다. 나를 위해 일한 유일한 것은 (Linux에서):
**/bin (yes without the / in the end) git version 2.18.0
AnthonyC공지사항으로;
.gitignore
가 어떤 식으로든 작동하지 않는다고 생각한다면 foo/*
폴더를 git status
여전히 폴더 내용을 수정된 것으로 표시하거나 이와 유사한 것으로 표시함) 이 명령을 사용할 수 있습니다.
git checkout -- foo/*
K-Gun2.13.3 이상에서는 .gitignore 파일에 bin만 작성하면 bin과 모든 하위 디렉토리 및 파일을 무시해야 합니다.
큰 상자
Nikhil Karanjkar.gitignore 파일에 **/bin/을 추가하면 도움이 됩니다(참고: bin 폴더는 색인에 추가되지 않았습니다).
Dhwaneel.gitignore
내부의 패턴이 슬래시 /
끝나면 디렉토리와 일치하는 항목만 찾습니다.
즉, bin/
은 디렉토리 bin
및 그 아래의 경로와 일치하지만 일반 파일 또는 기호 링크 bin
과 일치하지 않습니다.
패턴 에 슬래시가 포함되지 않은 bin
Git은 이를 쉘 glob 패턴(탐욕스러운)으로 취급합니다. /bin
을 사용하는 것이 가장 좋습니다.
bin
은 이 특정 문제에 대한 최상의 솔루션이 아닙니다.
prosti제 경우에는 gitignore 파일의 인코딩에 문제가 있었습니다. UTF-8인지 확인하십시오.
Jacek Plesnar@CB Bailey의 답변 외에도 :
색인 및 추적에서 et-cache
(Wordpress divi 테마의 캐싱 폴더)라는 여러 폴더(하위 폴더)를 제거하려고 했습니다.
나는 추가했다
et-cache/
.gitignore
파일로 이동합니다. 하지만
git rm -r --cached et-cache
오류가 발생했습니다:
치명적: pathspec 'et-cache'가 일치하는 파일이 없습니다.
그래서 해결책은 powershell을 사용하는 것이었습니다.
Get-ChildItem et-cache -Recurse |% {git rm -r --cached $_.FullName}
이렇게 하면 et-cache라는 이름의 모든 하위 폴더가 검색됩니다. 그런 다음 각 폴더 경로(전체 이름)를 사용하여 git의 추적에서 제거합니다.
Norman출처 : http:www.stackoverflow.com/questions/1470572/ignoring-any-bin-directory-on-a-git-project