programing

.gitignore는 모든 파일을 무시하고 * .foo를 재귀 적으로 허용합니다.

nasanasas 2021. 1. 11. 08:19
반응형

.gitignore는 모든 파일을 무시하고 * .foo를 재귀 적으로 허용합니다.


이미 이와 유사한 몇 가지 질문이 있지만 대답 중 어느 것도 저에게 효과가 없습니다.

* .foo 파일을 제외하고 내 저장소 아래 폴더의 모든 것을 무시하고 싶습니다.

(누군가 이것이 어떻게 정당화 될 수 있는지 궁금하다면-나는 실제로 모든 "Logic"프로젝트 (Mac의 음악 소프트웨어)를위한 git 저장소를 만들고 있지만 실제 프로젝트 파일 * .logic 만 저장하고 싶습니다.)

철자를 써서 우리는 모두 같은 판에 있습니다. 처음부터 시작하는 작업은 다음과 같습니다.

설정:

mkdir temp
cd temp
mkdir testdir
cd testdir
touch include.foo
touch dontinclude.bad
cd..
git init
touch .gitignore

.gitignore에 붙여 넣기

# Ignore all
/*

# But not these files...
!.gitignore
!*.foo

자식 상태

추적되지 않은 유일한 파일은 .gitignore입니다.

내가 'git add.'를 입력하면 -변경 사항이 없으며 .gitignore 만 표시되고 2 개의 파일이 무시됩니다.

이것이 작동하지 않는 이유는 무엇이며 작동하도록 위의 절차를 어떻게 변경할 수 있습니까?

.gitignore 파일을 가져온 매우 유사한 질문이 있습니다. git --version 1.7.7 (1.7.3도 시도)-. gitignore를 사용하여 모든 파일을 무시한 다음 특정 유형의 파일을 재귀 적으로 허용합니다.


문제는 /*처음 패턴이을 포함하여 최상위 수준의 모든 파일 및 디렉토리와 일치 testdir하므로 내부의 모든 testdir것이 무시 된다는 것 입니다 .

이것이 당신이 원하는 것입니다.

# Ignore everything
*
# Don't ignore directories, so we can recurse into them
!*/
# Don't ignore .gitignore and *.foo files
!.gitignore
!*.foo

git add .이 구성으로을 수행하면 커밋 할 변경 사항으로 나열된 .gitignore*.foo파일 만 있음을 알 수 있습니다 .

참조 URL : https://stackoverflow.com/questions/8024924/gitignore-ignore-all-files-then-recursively-allow-foo

반응형