Programming/Git

[Git] gitignore가 제대로 적용되지 않을 때 + rm 옵션

Sujin Lee (Daisy) 2020. 4. 18. 00:54

 

이미 존재하던 저장소에 .gitignore를 추가하면 적용이 되지 않는 경우가 있다. 

나의 경우 기존에 존재하던 팀프로젝트 저장소에 .gitignore를 적용해서 .classpath, .project .settings 와 같은 설정파일들이 git에 올라가지 않도록 하려고 했었는데, git ignore를 추가한 후에도 git에 계속 그 파일들이 올라가 있는 것을 확인했다. 검색을 해보니, 이럴 경우 rm -r --cached 해서 깃허브의 캐시를 삭제해주면 된다고 한다. 

 

.gitignore 적용 안 될 때의 해결법

 - 이렇게 했더니 잘 적용되었다. 

// git ignore 적용
git rm -r --cached .
git add .
git commit -m "Apply .gitignore"

 

원격저장소에 실수로 파일을 올렸을 때

 - github에 실수로 파일을 올려서, 로컬에서 파일을 삭제하고 push 했지만 여전히 github에 해당 파일이 올라가 있는 경우에도 마찬가지로 github의 캐시를 지워서 해결할 수 있다고 한다. 

 - 위에서는 모든 캐시를 다 지웠지만 특정 파일의 캐시만 지울 수도 있다. 

// 특정 파일 캐시 삭제
git rm --cached [FileName] 

 

 

파일 삭제

git rm -r : 원격저장소와 로컬의 파일 모두 삭제된다. 

git rm -r --cached: 원격저장소에서만 파일이 삭제되고 로컬의 파일은 그대로 둔다. 

 

 

rm 명령어의 옵션

 - 위에서 rm은 당연히 remove인걸 알겠는데 '-r' 옵션이 뭔지 궁금했다.

 - 찾아보니 하위 디렉토리를 포함하여 모든 내용을 삭제하는 것이라고 한다. 

 - 출처: https://shaeod.tistory.com/506

 

옵션 Long 옵션 설명
-f --force 강제로 파일이나 디렉토리를 삭제하고, 삭제할 대상이 없을 경우 메시지를 출력하지 않음.
-i  --interactive 매번 삭제할 때마다 사용자에게 질문함
-l   셋 이상의 파일을 삭제하거나 하위의 파일이나 디렉토리가 있을 경우 질문함
-r, -R --recursive 하위 디렉토리를 포함하여 모든 내용을 삭제
-d --dir 빈 디렉토리들만 제거
-v --verbose 지워지는 파일의 정보를 출력
  --help rm 명령어 사용법을 출력
  --version rm 명령어의 버전 정보를 출력 

 

 

 

반응형