2014-11-12 1 views
0

그래서 저는 뭔가 잘못하고 있다고 확신합니다.하지만 무엇을 실현할 수 있습니까?Gitignore가 untracking이 아닙니다.

.gitignore :이 문서를 변경하고 내가 git status을 수행 할 때 { content/data.db }

내가 얻을 :

Changes not staged for commit: 
    (use "git add/rm <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

    deleted: content/data.db 

예상 결과 :이 파일을 추적하지 않습니다.

물론, 내가 git add -A && git commit -m"this is a test" && git push 일 경우 파일이 리포에 푸시됩니다.

.gitignore의 무엇이 잘못 되었나요?

미리 감사드립니다.

답변

2

파일을 untrack해야하고, 그러면 자식은 .gitignore의 패턴을 사용하여 파일을 기꺼이 무시할 것입니다. 파일이 이미 추적중인 경우 ignorelist에 있어도 변경 내용이 무시되지 않습니다. 현재 상태에서 파일 시스템에서 파일을 제거했으나 아직 그것을 돌이키지 않은 것은 명백합니다.

그래서, 다음을 실행합니다 일반적으로

git rm --cached content/data.db 
git commit -m "removed db file" 

, 파일의 로컬 복사본이 삭제되지 않도록 --cached 플래그로 git rm 명령을 실행하는 것이 좋습니다.

귀하의 경우 이미 해당 파일이 파일 시스템에서 삭제되었으므로 git rm content/data.db도 올바르게 작동합니다. 당신의 .gitignore{ content/data.db } 등의 항목이있는 경우

아래 설명에서 설명하고있는 바와 같이 편집

확인합니다. 그 항목은 {이고 공백이 이므로 올바르지 않게됩니다.

.gitignore에 텍스트가 한 줄이면, content/data.db입니다. 무시 규칙 앞뒤에 공백이 없어야합니다.

방법의 자식 작품

.gitignore 내의 각 전체 라인은 파일이 무시할 수없는 원인, 패턴 자체를 변경 #로 시작하는 공백 또는 주석과 같은 fnmatch을위한 패턴 및 중복 문자로 처리됩니다.

+0

'--cached'가 필요 없습니다. 'git status '의 출력은 파일 시스템에서 파일이 이미 삭제되었음을 나타냅니다. – Jubobs

+0

@Jubobs 그래,하지만 난 항상 그 습관을 추가. 어쨌든, 그것에 대한 설명을 추가했습니다. –

+0

하지만 문제는 괜찮습니다. 나는 그것이 .gitignore에 있기 때문에 그것을 추적하고 싶지 않다. 하지만 'add -A'가 무대에 포함되었을 때. 어쩌면 나는 충분히 잘 설명하지 못한다. – sospedra