• git clean


    描述

    默认从当前位置(可以通过path设置路径)通过递归清理未被版本控制(未使用过add或者commit)的文件或者文件夹。
    通常只有不被版本控制的文件被删除,若指定-x则可以删除.gitignore忽略的文件。

    语法

    git clean [-d] [-f] [-i] [-n] [-q] [-e ] [-x|-X] [--]

    -n, –dry-run

    不会实际删除任何文件,只是提示哪些文件会被操作。

    ~/tmp/test_git$ tree
    .
    ├── a
    
    0 directory, 1 files
    
    ~/tmp/test_git$ git clean -n
    Would remove a
    
    ~/tmp/test_git$ git clean -f
    Removing a
    
    

    -f, –force

    强制删除

    ~/tmp/test_git$ tree
    .
    ├── a
    ├── b
    └── c
        └── c1
    
    1 directory, 3 files
    
    ~/tmp/test_git$ git clean -nf
    Would remove b
    
    ~/tmp/test_git$ git clean -ndf
    Would remove b
    Would remove c/
    
    

    -d

    删除未被添加到git路径的文件,.gitignore标记生效

    ~/tmp/test_git$ tree
    .
    ├── a
    ├── b
    ├── c
    │   └── c1
    └── ignore
    
    2 directories, 3 files
    
    ~/tmp/test_git$ git status
    On branch master
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    	b
    	c/
    
    nothing added to commit but untracked files present (use "git add" to track)
    
    ~/tmp/test_git$ more .gitignore 
    ignore/*
    ~/tmp/test_git$ git clean -n
    Would remove b
    ~/tmp/test_git$ git clean -nd
    Would remove b
    Would remove c/
    Would remove ignore/
    
    ~/tmp/test_git$ more .gitignore 
    ignore/
    ~/tmp/test_git$ git clean -n
    Would remove b
    ~/tmp/test_git$ git clean -nd
    Would remove b
    Would remove c/
    
    
    

    -x

    删除没有被track的文件,与是否 被.gitignore操作无关。

    ~/tmp/test_git$ tree
    .
    ├── a
    ├── b
    ├── c
    │   └── c1
    └── ignore
    
    2 directories, 3 files
    
    ~/tmp/test_git$ more .gitignore 
    ignore/
    
    ~/tmp/test_git$ git status
    On branch master
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    	b
    	c/
    
    nothing added to commit but untracked files present (use "git add" to track)
    
    ~/tmp/test_git$ git clean -nx
    Would remove b
    
    ~/tmp/test_git$ git clean -ndx
    Would remove b
    Would remove c/
    Would remove ignore/
    
    

    -q, –quiet

    不显示清理过程,或者错误。

    看图找不同吧

    ~/tmp/test_git$ tree
    .
    ├── a
    ├── b
    ├── c
    │   ├── c1
    │   └── c2
    ├── d
    ├── e
    │   ├── e1
    │   └── e2
    ├── f
    ├── g
    │   └── g1
    ├── h
    ├── ignore
    └── ignore_file
    
    5 directories, 10 files
    
    
    ~/tmp/test_git$ git status
    On branch master
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
    	new file:   d
    
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
    	modified:   b
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    	c/
    	f
    	g/
    
    ~/tmp/test_git$ more .gitignore 
    e/*
    ignore/
    ignore_file
    
    fl@fl:~/tmp/test_git$ git clean -n
    Would remove f
    fl@fl:~/tmp/test_git$ git clean -nd
    Would remove c/
    Would remove f
    Would remove g/
    Would remove h/
    fl@fl:~/tmp/test_git$ git clean -nx
    Would remove f
    Would remove ignore_file
    fl@fl:~/tmp/test_git$ git clean -ndx
    Would remove c/
    Would remove e/
    Would remove f
    Would remove g/
    Would remove h/
    Would remove ignore/
    Would remove ignore_file
    
    
    1. -n默认仅删除当前目录的文件

    2. -d目标中被.gitignore过滤(e/*,ignore/)

      ​ 未被版本控制的文件和文件夹

    3. -x目标不受.gitignore影响(ignore_file)

      ​ 当前目录中说有文件,不包含文件夹

    4. -dx是-d和-x的并集,扩大版

      不受.gitignore影响

      未被track的文件和文件夹

  • 相关阅读:
    P3833 [SHOI2012]魔法树 (树链剖分模板题)
    2019 Multi-University Training Contest 4 1008K-th Closest Distance(二分+主席树)
    bzoj3631: [JLOI2014]松鼠的新家(树上差分)
    bzoj4326: NOIP2015 运输计划(二分+LCA+树上差分)
    目录
    希望是一个全新的开始
    模板
    模板
    SCUT
    模板
  • 原文地址:https://www.cnblogs.com/faithlocus/p/16412021.html
Copyright © 2020-2023  润新知