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:10] 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: You should understand ''gitignore'' files.
 +
 +===== DESCRIPTION =====
 +
 +<code>
 +Cleans the working tree by recursively removing files that are not
 +under version control, starting from the current directory.
 +
 +Normally, only files unknown to Git are removed, but if the -x
 +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.
 +</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>
  • git_clean.1526901028.txt.gz
  • Last modified: 2018/05/21 11:10
  • by rpjday