[git] .gitignore 특정 파일 제외

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

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

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



답변

“무시하다”라는 이름이 암시하는 것과는 대조적입니다. 파일을 제출할 .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파일을 추가합니다.


답변

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

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

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

git rm --cached FILENAME

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

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


답변

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

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

git rm --cached <file>


답변

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

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

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


답변