gitignore 파일을 작성을 했는데 이상하게도 계속 해당 파일들이 Untracked Files 에 잡혔다.
그런데 분명히 내가 작성한 gitignore 파일에는 다음과 같이 존재하고 있었다.
.idea/
.DS_Store
그래서 구글링을 해보니 아래와 같이 해결책을 제시해줬다.
https://stackoverflow.com/questions/32384473/gitignore-not-ignoring-idea-path
첫번째 시도
git rm -rf .idea/
Git에서 파일을 제거하려면
git rm
명령으로 Tracked 상태의 파일을 삭제한 후에(정확하게는 Staging Area에서 삭제하는 것) 커밋해야 한다. 이 명령은 워킹 디렉토리에 있는 파일도 삭제하기 때문에 실제로 파일도 지워진다.
그랬더니 다음과 같은 메세지가 나왔다.
fatal: pathspec '.idea/' did not match any files
상황을 보아 하니 rm 명령어가 Tracked 상태의 파일을 삭제하는 명령어 인데 위 파일들은 tracked 되지 않은 파일이기 때문에 없다고 나온것 같다.
두번째 시도
git clean -f -d .idea/
일단 이렇게 하니깐 Untracked 파일들이 다 지워지긴 했다.
그럼 이 명령어가 무엇을 의미하는지 한번 살펴보자.
워킹 디렉토리 청소하기
작업하고 있던 파일을 Stash 하지 않고 단순히 그 파일들을 치워버리고 싶을 때가 있다.
git clean
명령이 그 일을 한다.
<출처 : https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Stashing%EA%B3%BC-Cleaning >
결과적으로 Untracked 파일들을 모두 지운다는 의미이다.... -_-;; 좀 무서운 명령어다. 설명에도 다음과 같이 써있다.
이 명령을 사용할 때는 신중해야 한다. 이 명령을 사용하면 워킹 디렉토리 안의 추적하고 있지 않은 모든 파일이 지워지기 때문이다. 명령을 실행하고 나서 후회해도 소용없다. 지워진 파일은 돌아오지 않는다.
git stash –all
명령을 이용하면 지우는 건 똑같지만, 먼저 모든 파일을 Stash 하므로 좀 더 안전하다.워킹 디렉토리의 불필요한 파일들을 전부 지우려면
git clean
을 사용한다. 추적 중이지 않은 모든 정보를 워킹 디렉토리에서 지우고 싶다면git clean -f -d
명령을 사용하자. 이 명령은 하위 디렉토리까지 모두 지워버린다.-f
옵션은 강제(force)의 의미이며 "진짜로 그냥 해라"라는 뜻이다.
한마디로 한번 지우면 되돌릴수 없다라는 의미이다.
문제를 해결 하긴 했지만 위 명령어를 사용할 때에는 좀 신중할 필요는 있어보인다.
'Development > Git' 카테고리의 다른 글
git tag 만든 것을 수정하고 싶을때에는 어떻게 해야하나? (0) | 2020.02.05 |
---|---|
Git 리모트에 삭제된 브랜치 반영하기 (0) | 2019.05.30 |
특정 브랜치의 파일만 패치하기. (0) | 2019.03.29 |
로컬에 있는 프로젝트를 Github로 올리기 (0) | 2018.06.11 |
Git Add, commit (0) | 2017.07.13 |