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.