.gitignore 특정 파일 제외


94

.gitignore파일 을 사용 templates.js하여 public/app/폴더 에있는 제외 하려고 합니다. 내 .gitignore파일은 다음과 같습니다.

/vendor
/node_modules
composer.phar
composer.lock
.DS_Store
templates.js

하지만 Git Gui를 체크인하면 templates.js파일이 여전히 표시됩니다. 를 사용하여 파일을 구체적으로 제외하려면 어떻게 .gitignore해야합니까?


2
파일이 이전에 이미 저장소에 추가되었음을 의미합니까? .gitignore추가 할 콘텐츠 만 무시합니다.
Willem Van Onsem

2
@CommuSoft 예, 이전에 저장소에 추가되었습니다. 그렇다면 지금 어떻게 제외 할 수 있습니까? 내 방식이 .gitignore정확합니까?
user1995781

답변:


152

"무시하다"라는 이름이 암시하는 것과는 대조적입니다. 파일을 제출할 .gitignore때만 참조됩니다 git add. 즉, 저장소 (의 색인)에 이미 추가 된 파일은 .gitignore.

먼저 .gitignore파일이 더 이상 추가되지 않도록 수정하는 것이 좋습니다 . .gitignore파일에 다음 행을 추가 하십시오.

public/app/template.js

다음으로 저장소에서 파일을 제외해야합니다. 아마도 파일 시스템에서 파일을 제거하고 싶지 않을 것입니다. 다음을 사용하여 수행 할 수 있습니다.

git rm --cached public/app/template.js

--cached플래그는 파일이 파일 시스템에서 제거되지 않습니다 보장합니다. (당신이 사용할 수있는 중요하지 않은 경우 git rm public/app/template.js, 하지만이 파일을 제거합니다 ).

배경

.gitignore사전에 사용되지 않는 이유 는 때때로 .gitignore. 추적하지 않으려는 예를 들어 말 *.log지정할 수있는 파일을 *.log.gitignore. 그러나 추적하려는 특정 항목이 있으면 추가 할 수 있습니다 git add -f some.log. -f플래그 힘은 git파일을 추가합니다.


생명의 은인, 내 자격 증명을 공개했습니다
mLstudent33

21

파일이 git 저장소에 한 번 '추가'되면 .gitignore 파일에 나열되는지 여부에 관계없이 계속 추적됩니다.

이전에 template.js 파일을 추가했다고 생각합니다.이 경우 저장소에서 제거 할 때까지 변경 사항이 계속 추적됩니다. 파일이 저장소에서 제거되면 .gitignore 파일을 통해 제대로 무시됩니다.

파일을 삭제하지 않고 git 저장소 (명령 줄)에서 제거하는 방법은 다음과 같습니다.

git rm --cached FILENAME

그런 다음 gitignore의 파일로 커밋을 시도하면 작동하지 않습니다.

gitignore에있는 파일을 구체적으로 추가하는 경우 파일을 수동으로 추가하면 gitignore가 무시됩니다.


감사합니다. "git rm --cached FILENAME"은 매력처럼 작동했습니다. :)
Kamlesh

11

이미 파일을 추적하고있는 경우 ( git addgit commit) .gitignore도움이되지 않습니다.

나는 당신이 원하는 것은 파일을 추적 중지하는 것입니다 생각 다음 사용 .gitignore을 제외 할 수 있습니다. 파일 추적을 중지하고 파일을 유지하려면 다음을 사용하십시오.

git rm --cached <file>


dv는 아니었지만 아마도 당신의 단어를 더 잘 선택해야한다고 생각합니다. 저장소보관하는 것은 로컬 파일 시스템에 보관하는 것과 약간 다릅니다 . 리포지토리는없는 지도 ... 파일 시스템에
윌렘 반 Onsem에게

@CommuSoft 약간의 만족감으로 고정되어 다른 사람들이 더 잘 대답했기 때문에 너무 조심하지 않았습니다. 제안 해 주셔서 감사합니다.
Ross

7

이 경우 추적 templates.js을 중지 할 수 있습니다.

git rm --cached public/app/templates.js

다른 사람들이 설명 .gitignore했듯이은 추가 할 콘텐츠 만 무시합니다. 자주 사용하는 경우, 예를 들어, git add .및이 templates.js당신의 .gitignore다음 자식은 추가되지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.