Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

git이 추적하지 않는 untracked files 한꺼번에 삭제하기

git으로 프로젝트를 관리하다 보면 untracked 파일이 쌓이는 경우가 종종 있다.(나만 그럴지도...) 저장소에 넣을 파일은 아니지만, 테스트용으로 로컬에서 임시로 만들었다거나 이미지 등의 파일을 추가하려고 프로젝트 밑에 추가했거나 하는 등의 경우가 있다. 이런 파일을 .gitignore안에 넣어도 되지만 빌드파일 처럼 프로젝트 내에 원래 생기는 파일이 아니라 그냥 임시용으로 만들 거라면 딱히 패턴이 없는 경우가 많고 패턴이 있어도 굳이 ignore 시킬 필요까지는 없다. modified 파일을 한 번에 취소하려면 git co -- .같은 명령어로 지울 수 있지만, untracked 파일은 git이 관여하지 않아서 한곳에 모여있지 않는다면 일일이 지우는 것도 일이다.

$ git status
On branch feature
Untracked files:
  (use "git add <file>..." to include in what will be committed)

  data1.json
  data2.json
  data3.json
  data4.json
  images/

nothing added to commit but untracked files present (use "git add" to track)

$ git clean -f
Removing data1.json
Removing data2.json
Removing data3.json
Removing data4.json

$ git status
On branch feature
Untracked files:
  (use "git add <file>..." to include in what will be committed)

  images/

nothing added to commit but untracked files present (use "git add" to track)

이럴 때 위처럼 git clean -f를 사용하면 untracked 파일을 모두 지울 수 있고 디렉터리까지 지우려면 git clean -fd처럼 -d 옵션을 추가하면 된다.

$ git clean -fd
Removing data1.json
Removing data2.json
Removing data3.json
Removing data4.json
Removing images/

추적 안 하는 파일을 지우는 것이므로 실수하면 작업 중인 파일(아직 커밋하지 않은)을 모두 날릴 수 있다. 이럴 때 --dry-run 옵션을 추가하면 지워질 파일을 미리 확인해 볼 수 있다.(하지만 이럴 정신 있으면 실수라고 안 부르겠지만...)

$ git clean -fd --dry-run
Would remove data1.json
Would remove data2.json
Would remove data3.json
Would remove data4.json
Would remove images/
2015/08/20 04:13 2015/08/20 04:13