etc./StackOverFlow

git 프로젝트의 'bin' 디렉토리 무시

청렴결백한 만능 재주꾼 2023. 4. 15. 23:22
반응형

질문자 :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 - hacker

git 초보자를 위해 언급할 가치가 있다고 생각합니다.

이미 체크인한 파일이 있고 이를 무시하려는 경우 나중에 규칙을 추가해도 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/

VonC

[Bb]in/

대문자와 소문자 모두 일치


wisbucky

여기에 언급된 것을 보지 못했지만 대소문자를 구분하는 것 같습니다. /Bin으로 변경하면 예상대로 파일이 무시되었습니다.


Cory

1단계: .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"

PM 콘솔 그러면 문제가 완전히 해결됩니다.


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*/

Jaider

모든 Visual Studio( .NET ) 솔루션을 위한 훌륭한 전역 .gitignore 파일을 찾고 있다면 다음을 사용하는 것이 좋습니다. https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

AFAIK에는 .NET 프로젝트를 위한 가장 포괄적인 .gitignore


Jochen van Wylick

말 그대로 어떤 답변도 실제로 효과가 없었습니다. 나를 위해 일한 유일한 것은 (Linux에서):

 **/bin (yes without the / in the end) git version 2.18.0

AnthonyC

공지사항으로;

.gitignore 가 어떤 식으로든 작동하지 않는다고 생각한다면 foo/* 폴더를 git status 여전히 폴더 내용을 수정된 것으로 표시하거나 이와 유사한 것으로 표시함) 이 명령을 사용할 수 있습니다.

git checkout -- foo/*


K-Gun

2.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 테마의 캐싱 폴더)라는 여러 폴더(하위 폴더)를 제거하려고 했습니다.

나는 추가했다

 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

반응형