Git의 루트 폴더에서만 파일을 제외하는 방법


399

.gitignore파일을 사용하여 추가되는 일부 파일을 제외하는 것을 알고 있지만 config.php소스 트리에 여러 파일이 있으며 루트에있는 하나의 파일 만 제외하고 다른 하나는 수정 제어를 유지해야합니다.

이를 위해 무엇을 써야 .gitignore합니까?

답변:


588

로부터 문서 :

패턴에 슬래시 (/)가 포함되어 있지 않은 경우, git은 패턴을 쉘 glob 패턴으로 취급하고 .gitignore 파일의 위치 (.gitignore가 아닌 경우 작업 트리의 최상위 레벨과 관련)에 대한 경로 이름과 일치하는지 확인합니다. 파일).

선행 슬래시는 경로 이름의 시작과 일치합니다. 예를 들어 "/*.c"는 "cat-file.c"와 일치하지만 "mozilla-sha1 / sha1.c"와는 일치하지 않습니다.

따라서 루트에 다음 줄을 추가해야합니다 .gitignore.

/config.php

1
감사합니다! 나는 이런 식으로 시도했지만 어떤 이유로 든 효과가 없었습니다. 아마 잘못 입력 어딘가에 뭔가 =)
— 파벨 Karoukin

1
파일이 아니라 폴더이고 저장소 루트에 포함 된 폴더, 포함 된 파일 및 모든 하위 하위 폴더 및 파일을 무시하려면 어떻게해야합니까? /folder/?
— CodeManX

11
하나 /folder/또는 /folder작동하지만 끝에 슬래시를 추가하면 폴더에만 경기를 제한하는 것입니다. 루트 디렉토리에 'foo'라는 파일이 있다면, /foo/무시하지 말고 무시하십시오 /foo.
— tehDorf 2016 년

이미 파일을 커밋 한 경우 command를 실행하십시오 git rm --cached <file>. 그렇지 않으면 파일이 무시되지 않습니다. 보낸 사람 : stackoverflow.com/a/1274447
— Bruno Polo


29

이전 버전의 git에서는 먼저 무시 패턴을 정의하고 즉시 (다음 줄에서) 제외를 정의해야합니다. [버전 1.9.3 (Apple Git-50)에서 테스트]

/config.php
!/*/config.php

최신 버전은 다음 버전 만 필요합니다 [버전 2.2.1에서 테스트 됨]

/config.php

17

위의 해결 방법으로 문제가 해결되지 않으면 다음을 시도하십시오.

#1.1 Do NOT ignore file pattern in  any subdirectory
!*/config.php
#1.2 ...only ignore it in the current directory
/config.php

##########################

# 2.1 Ignore file pattern everywhere
config.php
# 2.2 ...but NOT in the current directory
!/config.php

/config.php혼자서는 그렇지 않지만 이것은 실제로 나를 위해 작동합니다 . 왜 그렇지 않은지 궁금합니다. 당신은 아이디어가 있습니까?
— iago-lito '

@ iago-lito 특정 프로젝트에서 작업하고 특정 디렉토리에서 일부 file.ext를 무시하는 방법과 다른 곳에서는 무시하지 않으려면 /home/me/.gitignore 파일에 넣으십시오. /home/me/path/to/my/project/some/folder/file.ext 또는 file.ext 또는 어디서나 파일을 무시한 다음 / home / me / path / to / my / project / some / folder / .gitignore 파일은이 특정 디렉토리 에서이 파일을 무시하지 않도록! file.ext 파일을 넣습니다. 각 폴더는 상위 .gitignore 파일 설정을
— 덮어 쓰기

흠. 이것은 다른 사용자가 ~/.gitignore자신의 컴퓨터에 다른 파일을 가지고 있는지 여부에 따라 repo가 ​​다르게 동작 할 수 있음을 의미합니다 . 게다가 내 요점은 "위의 솔루션이 작동하지 않는 경우"라고 쓴 이유는 무엇입니까?
— iago-lito

예, 프로젝트가 알 수없는 환경에 존재할 수 있다면 프로젝트 루트 폴더 위에있는 .gitignore 파일에 의존해서는 안됩니다. config.php와 같은 파일 이름은 매우 일반적이므로 루트 .gitignore 파일에서이 파일의 기존 설정을 무시하십시오.
— drugan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.