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:25] – [DESCRIPTION] 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 =====
Line 27: Line 27:
 affected. affected.
 </code> </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 ===== ===== Basic options =====
Line 40: Line 42:
  
 -q, --quiet -q, --quiet
-    Be quiet, only report errors, but not the files that are successfully removed.+    Be quiet, only report errors, but not the files that are 
 +    successfully removed.
 </code> </code>
  
Line 46: Line 49:
  
 <code> <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.1526901940.txt.gz
  • Last modified: 2018/05/21 11:25
  • by rpjday