0. Introduction

  • 이번 단원에서는 git에 추적되지 않는 파일( Untracked file )들 즉, 관리되지 않는 파일들을 삭제하는 git clean에 대해 알아본다.

git clean

  • working directory에 존재하면 Untraced 상태인 파일들과 폴더가 git clean의 대상이다.

  • git clean으로 삭제되면 Utracked 상태에서도 사라진다.

  • 삭제하기 위해서는 아래 옵션들을 사용해야 한다.

    • -i 또는 -f

git clean option

  • 아래 옵션들을 조합하여 사용하자.
옵션설명
-n삭제될 파일들 보여주기
-iinteractive mode 시작
-d폴더 포함
-f강제로 바로 지워버리기
-x.gitignore에 등록된 파일들도 삭제
  • git clean -x의 경우, git clean은 기본적으로 .gitignore에 등록된 파일은 삭제하지 않기 때문에 존재하는 명령어다.

  • interactive mode는 관리하지 않은 파일들에 대해 하나하나 체크하고 싶을 때 사용하는 모드다.

  • git clean -x는 함부로 사용하지 않는다.

실습 상황 구현해보기

  • 아래 3개의 파일을 생성하자.

    • toClean1.txt
    • toClean2.txt
    • dir/toClean3.txt
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    
    > $ git clean -n
    Would remove toClean1.txt
    Would remove toClean2.txt
    
    
    > $ git clean -dn
    > $ git clean -nd
    Would remove dir/
    Would remove toClean1.txt
    Would remove toClean2.txt
    
    # 폴더를 포함시켜서 interactive mode를 시작한다.
    > $ git clean -id
    > $ git clean -di
    Would remove the following items:
      dir/          toClean1.txt  toClean2.txt
    *** Commands ***
        1: clean                2: filter by pattern    3: select by numbers
        4: ask each             5: quit                 6: help
    # select by numbers mode를 선택한다.
    What now> 3
    
    # 어떤 것을 선택할지 선택하세요.
        1: dir/            2: toClean1.txt    3: toClean2.txt
    Select items to delete>> 1, 3
    
    # * 으로 선택된 파일들을 확인할 수 있다.
    * 1: dir/            2: toClean1.txt  * 3: toClean2.txt
    Select items to delete>>
    Would remove the following items:
      dir/          toClean2.txt
    
    *** Commands ***
        1: clean                2: filter by pattern    3: select by numbers
        4: ask each             5: quit                 6: help
    
    # 삭제될 것으로 선택된 파일들에 대해 각각 물어봐달라
    What now> 4
    Remove dir/ [y/N]? y
    Remove toClean2.txt [y/N]? N
    Removing dir/
    
    # 결국 'dir/' 만 삭제된 걸 알 수 있다.
    
  • 그런데, 각 파일이 어떻든 상관 없이 폴더까지 포함하여 삭제하고 싶다면 아래 명령어를 사용한다.

    1
    2
    3
    4
    
    $ git clean -fd
    Removing toClean1.txt
    Removing toClean2.txt
    Removing /dir
    

Reference