Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
git_clean [2018/05/21 11:14] rpjdaygit_clean [2019/02/28 15:25] (current) – [Overriding standard ignore rules] rpjday
Line 1: Line 1:
 ===== Overview ===== ===== Overview =====
  
-General usage for cleaning your working directory of untracked files:+General usage for "cleaningyour working directory:
  
  
Line 8: Line 8:
 </code> </code>
  
-Config setting:+The single config setting for this command:
  
   * ''clean.requireForce''   * ''clean.requireForce''
  
-Prerequisites: ''gitignore''+Prerequisites: You should understand ''gitignore'' files.
  
 ===== DESCRIPTION ===== ===== DESCRIPTION =====
  
 <code> <code>
-Cleans the working tree by recursively removing files that are not under version control, +Cleans the working tree by recursively removing files that are not 
-starting from the current directory.+under version control, starting from the current directory.
  
-Normally, only files unknown to Git are removed, but if the -x option is specified, ignored +Normally, only files unknown to Git are removed, but if the -x 
-files are also removed. This can, for example, be useful to remove all build products.+option is specified, ignored files are also removed. This can, for 
 +example, be useful to remove all build products.
  
-If any optional <path>... arguments are given, only those paths are affected.+If any optional <path>... arguments are given, only those paths are 
 +affected. 
 +</code> 
 + 
 +Note how both ignored files and new, //staged// files are not cleaned by default. Currently, there is some dissension regarding what is meant by files "known to Git." 
 + 
 +===== Basic options ===== 
 + 
 +General execution options: 
 + 
 +<code> 
 +-i, --interactive 
 +    Show what would be done and clean files interactively. 
 + 
 +-n, --dry-run 
 +    Don’t actually remove anything, just show what would be done. 
 + 
 +-q, --quiet 
 +    Be quiet, only report errors, but not the files that are 
 +    successfully removed. 
 +</code> 
 + 
 +Forcing the issue: 
 + 
 +<code> 
 +-f, --force 
 +    If the Git configuration variable clean.requireForce is not set 
 +    to false, git clean will refuse to delete files or directories 
 +    unless given -f, -n or -i. Git will refuse to delete 
 +    directories with .git sub directory or file unless a second -f 
 +    is given. 
 +</code> 
 + 
 +Removing directories as well: 
 + 
 +<code> 
 +-d 
 +    Remove untracked directories in addition to untracked files. If 
 +    an untracked directory is managed by a different Git 
 +    repository, it is not removed by default. Use -f option twice 
 +    if you really want to remove such a directory. 
 +</code> 
 + 
 +===== Overriding standard ignore rules ===== 
 + 
 +The explanation below oddly does not mention the use of the configuration setting ''core.excludesFile''
 + 
 +<code> 
 +-e <pattern>, --exclude=<pattern> 
 +    In addition to those found in .gitignore (per directory) and 
 +    $GIT_DIR/info/exclude, also consider these patterns to be in 
 +    the set of the ignore rules in effect. 
 + 
 +-x 
 +    Don’t use the standard ignore rules read from .gitignore 
 +    (per directory) and $GIT_DIR/info/exclude, but do still use 
 +    the ignore rules given with -e options. This allows removing 
 +    all untracked files, including build products. This can be 
 +    used (possibly in conjunction with git reset) to create a 
 +    pristine working directory to test a clean build. 
 + 
 +-X 
 +    Remove only files ignored by Git. This may be useful to 
 +    rebuild everything from scratch, but keep manually created 
 +    files. 
 +</code> 
 + 
 +===== Getting a "pristine" working tree ===== 
 + 
 +Create a shell alias: 
 + 
 +<code> 
 +alias gpristine='git reset --hard && git clean -dfx'
 </code> </code>
  • git_clean.1526901270.txt.gz
  • Last modified: 2018/05/21 11:14
  • by rpjday