<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<meta name="generator" content="AsciiDoc 7.0.2" />\r
<style type="text/css">\r
/* Debug borders */\r
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
</div>\r
<h2>SYNOPSIS</h2>\r
<div class="sectionbody">\r
-<p><em>git-add</em> [-n] [-v] <file>…</p>\r
+<p><em>git-add</em> [-n] [-v] [--] <file>…</p>\r
</div>\r
<h2>DESCRIPTION</h2>\r
<div class="sectionbody">\r
Be verbose.\r
</p>\r
</dd>\r
+<dt>\r
+—\r
+</dt>\r
+<dd>\r
+<p>\r
+ This option can be used to separate command-line options from\r
+ the list of files, (useful when filenames might be mistaken\r
+ for command-line options).\r
+</p>\r
+</dd>\r
</dl>\r
</div>\r
<h2>DISCUSSION</h2>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 06-Jan-2006 17:11:58 PDT\r
+Last updated 22-Feb-2006 10:44:46 UTC\r
</div>\r
</div>\r
</body>\r
SYNOPSIS
--------
-'git-add' [-n] [-v] <file>...
+'git-add' [-n] [-v] [--] <file>...
DESCRIPTION
-----------
-v::
Be verbose.
+--::
+ This option can be used to separate command-line options from
+ the list of files, (useful when filenames might be mistaken
+ for command-line options).
+
DISCUSSION
----------
</div>\r
<h2>SYNOPSIS</h2>\r
<div class="sectionbody">\r
-<p><em>git-ls-files</em> [-z] [-t]\r
+<div class="verseblock">\r
+<div class="content"><em>git-ls-files</em> [-z] [-t] [-v]\r
(--[cached|deleted|others|ignored|stage|unmerged|killed|modified])*\r
(-[c|d|o|i|s|u|k|m])*\r
[-x <pattern>|--exclude=<pattern>]\r
[-X <file>|--exclude-from=<file>]\r
[--exclude-per-directory=<file>]\r
- [--full-name] [--] [<file>]*</p>\r
+ [--error-unmatch]\r
+ [--full-name] [--] [<file>]*</div></div>\r
</div>\r
<h2>DESCRIPTION</h2>\r
<div class="sectionbody">\r
</p>\r
</dd>\r
<dt>\r
+--error-unmatch\r
+</dt>\r
+<dd>\r
+<p>\r
+ If any <file> does not appear in the index, treat this as an\r
+ error (return 1).\r
+</p>\r
+</dd>\r
+<dt>\r
-t\r
</dt>\r
<dd>\r
</table></div>\r
</dd>\r
<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+ Similar to <tt>-t</tt>, but use lowercase letters for files\r
+ that are marked as <em>always matching index</em>.\r
+</p>\r
+</dd>\r
+<dt>\r
--full-name\r
</dt>\r
<dd>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 14-Feb-2006 07:59:59 UTC\r
+Last updated 22-Feb-2006 10:44:46 UTC\r
</div>\r
</div>\r
</body>\r
SYNOPSIS
--------
-'git-ls-files' [-z] [-t]
+[verse]
+'git-ls-files' [-z] [-t] [-v]
(--[cached|deleted|others|ignored|stage|unmerged|killed|modified])\*
(-[c|d|o|i|s|u|k|m])\*
[-x <pattern>|--exclude=<pattern>]
[-X <file>|--exclude-from=<file>]
[--exclude-per-directory=<file>]
+ [--error-unmatch]
[--full-name] [--] [<file>]\*
DESCRIPTION
read additional exclude patterns that apply only to the
directory and its subdirectories in <file>.
+--error-unmatch::
+ If any <file> does not appear in the index, treat this as an
+ error (return 1).
+
-t::
Identify the file status with the following tags (followed by
a space) at the start of each line:
K:: to be killed
?:: other
+-v::
+ Similar to `-t`, but use lowercase letters for files
+ that are marked as 'always matching index'.
+
--full-name::
When run from a subdirectory, the command usually
outputs paths relative to the current directory. This
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<meta name="generator" content="AsciiDoc 7.0.2" />\r
<style type="text/css">\r
/* Debug borders */\r
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
</div>\r
<h2>SYNOPSIS</h2>\r
<div class="sectionbody">\r
-<p><em>git-pack-objects</em> [--non-empty] [--local] [--incremental] [--window=N] [--depth=N] {--stdout | base-name} < object-list</p>\r
+<div class="verseblock">\r
+<div class="content"><em>git-pack-objects</em> [-q] [--no-reuse-delta] [--non-empty]\r
+ [--local] [--incremental] [--window=N] [--depth=N]\r
+ {--stdout | base-name} < object-list</div></div>\r
</div>\r
<h2>DESCRIPTION</h2>\r
<div class="sectionbody">\r
<p>Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or\r
any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)\r
enables git to read from such an archive.</p>\r
+<p>In a packed archive, an object is either stored as a compressed\r
+whole, or as a difference from some other object. The latter is\r
+often called a delta.</p>\r
</div>\r
<h2>OPTIONS</h2>\r
<div class="sectionbody">\r
least one object.\r
</p>\r
</dd>\r
+<dt>\r
+-q\r
+</dt>\r
+<dd>\r
+<p>\r
+ This flag makes the command not to report its progress\r
+ on the standard error stream.\r
+</p>\r
+</dd>\r
+<dt>\r
+--no-reuse-delta\r
+</dt>\r
+<dd>\r
+<p>\r
+ When creating a packed archive in a repository that\r
+ has existing packs, the command reuses existing deltas.\r
+ This sometimes results in a slightly suboptimal pack.\r
+ This flag tells the command not to reuse existing deltas\r
+ but compute them from scratch.\r
+</p>\r
+</dd>\r
</dl>\r
</div>\r
<h2>Author</h2>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 06-Jan-2006 17:12:41 PDT\r
+Last updated 22-Feb-2006 10:44:47 UTC\r
</div>\r
</div>\r
</body>\r
SYNOPSIS
--------
-'git-pack-objects' [--non-empty] [--local] [--incremental] [--window=N] [--depth=N] {--stdout | base-name} < object-list
+[verse]
+'git-pack-objects' [-q] [--no-reuse-delta] [--non-empty]
+ [--local] [--incremental] [--window=N] [--depth=N]
+ {--stdout | base-name} < object-list
DESCRIPTION
any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)
enables git to read from such an archive.
+In a packed archive, an object is either stored as a compressed
+whole, or as a difference from some other object. The latter is
+often called a delta.
+
OPTIONS
-------
Only create a packed archive if it would contain at
least one object.
+-q::
+ This flag makes the command not to report its progress
+ on the standard error stream.
+
+--no-reuse-delta::
+ When creating a packed archive in a repository that
+ has existing packs, the command reuses existing deltas.
+ This sometimes results in a slightly suboptimal pack.
+ This flag tells the command not to reuse existing deltas
+ but compute them from scratch.
+
+
Author
------
Written by Linus Torvalds <torvalds@osdl.org>
to fast forward the remote ref that matches <dst>. If\r
the optional plus <tt>+</tt> is used, the remote ref is updated\r
even if it does not result in a fast forward update.</p>\r
+<p>Note: If no explicit refspec is found, (that is neither\r
+on the command line nor in any Push line of the\r
+corresponding remotes file---see below), then all the\r
+refs that exist both on the local side and on the remote\r
+side are updated.</p>\r
<p>Some short-cut notations are also supported.</p>\r
<ul>\r
<li>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 07-Feb-2006 08:04:31 UTC\r
+Last updated 22-Feb-2006 10:44:47 UTC\r
</div>\r
</div>\r
</body>\r
the optional plus `+` is used, the remote ref is updated
even if it does not result in a fast forward update.
+
+Note: If no explicit refspec is found, (that is neither
+on the command line nor in any Push line of the
+corresponding remotes file---see below), then all the
+refs that exist both on the local side and on the remote
+side are updated.
++
Some short-cut notations are also supported.
+
* `tag <tag>` means the same as `refs/tags/<tag>:refs/tags/<tag>`.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<meta name="generator" content="AsciiDoc 7.0.2" />\r
<style type="text/css">\r
/* Debug borders */\r
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
</div>\r
<h2>SYNOPSIS</h2>\r
<div class="sectionbody">\r
-<p><em>git-rebase</em> <upstream> [<head>]</p>\r
+<p><em>git-rebase</em> [--onto <newbase>] <upstream> [<branch>]</p>\r
</div>\r
<h2>DESCRIPTION</h2>\r
<div class="sectionbody">\r
-<p>Rebases local commits to the new head of the upstream tree.</p>\r
+<p>git-rebase applies to <upstream> (or optionally to <newbase>) commits\r
+from <branch> that do not appear in <upstream>. When <branch> is not\r
+specified it defaults to the current branch (HEAD).</p>\r
+<p>When git-rebase is complete, <branch> will be updated to point to the\r
+newly created line of commit objects, so the previous line will not be\r
+accessible unless there are other references to it already.</p>\r
+<p>Assume the following history exists and the current branch is "topic":</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt> A---B---C topic\r
+ /\r
+D---E---F---G master</tt></pre>\r
+</div></div>\r
+<p>From this point, the result of the following commands:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-rebase master\r
+git-rebase master topic</tt></pre>\r
+</div></div>\r
+<p>would be:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt> A'--B'--C' topic\r
+ /\r
+D---E---F---G master</tt></pre>\r
+</div></div>\r
+<p>While, starting from the same point, the result of the following\r
+commands:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-rebase --onto master~1 master\r
+git-rebase --onto master~1 master topic</tt></pre>\r
+</div></div>\r
+<p>would be:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt> A'--B'--C' topic\r
+ /\r
+D---E---F---G master</tt></pre>\r
+</div></div>\r
</div>\r
<h2>OPTIONS</h2>\r
<div class="sectionbody">\r
<dl>\r
<dt>\r
+<newbase>\r
+</dt>\r
+<dd>\r
+<p>\r
+ Starting point at which to create the new commits. If the\r
+ --onto option is not specified, the starting point is\r
+ <upstream>.\r
+</p>\r
+</dd>\r
+<dt>\r
<upstream>\r
</dt>\r
<dd>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 27-Dec-2005 00:16:32 PDT\r
+Last updated 22-Feb-2006 10:44:47 UTC\r
</div>\r
</div>\r
</body>\r
SYNOPSIS
--------
-'git-rebase' <upstream> [<head>]
+'git-rebase' [--onto <newbase>] <upstream> [<branch>]
DESCRIPTION
-----------
-Rebases local commits to the new head of the upstream tree.
+git-rebase applies to <upstream> (or optionally to <newbase>) commits
+from <branch> that do not appear in <upstream>. When <branch> is not
+specified it defaults to the current branch (HEAD).
+
+When git-rebase is complete, <branch> will be updated to point to the
+newly created line of commit objects, so the previous line will not be
+accessible unless there are other references to it already.
+
+Assume the following history exists and the current branch is "topic":
+
+ A---B---C topic
+ /
+ D---E---F---G master
+
+From this point, the result of the following commands:
+
+ git-rebase master
+ git-rebase master topic
+
+would be:
+
+ A'--B'--C' topic
+ /
+ D---E---F---G master
+
+While, starting from the same point, the result of the following
+commands:
+
+ git-rebase --onto master~1 master
+ git-rebase --onto master~1 master topic
+
+would be:
+
+ A'--B'--C' topic
+ /
+ D---E---F---G master
OPTIONS
-------
+<newbase>::
+ Starting point at which to create the new commits. If the
+ --onto option is not specified, the starting point is
+ <upstream>.
+
<upstream>::
Upstream branch to compare against.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<meta name="generator" content="AsciiDoc 7.0.2" />\r
<style type="text/css">\r
/* Debug borders */\r
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
</div>\r
<h2>SYNOPSIS</h2>\r
<div class="sectionbody">\r
-<p><em>git-repack</em> [-a] [-d] [-l] [-n]</p>\r
+<p><em>git-repack</em> [-a] [-d] [-f] [-l] [-n] [-q]</p>\r
</div>\r
<h2>DESCRIPTION</h2>\r
<div class="sectionbody">\r
</p>\r
</dd>\r
<dt>\r
+-f\r
+</dt>\r
+<dd>\r
+<p>\r
+ Pass the <tt>--no-reuse-delta</tt> option to <tt>git pack-objects</tt>, see\r
+ <a href="git-pack-objects.html">git-pack-objects(1)</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+-q\r
+</dt>\r
+<dd>\r
+<p>\r
+ Pass the <tt>-q</tt> option to <tt>git pack-objects</tt>, see\r
+ <a href="git-pack-objects.html">git-pack-objects(1)</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
-n\r
</dt>\r
<dd>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 27-Dec-2005 00:16:34 PDT\r
+Last updated 22-Feb-2006 10:44:48 UTC\r
</div>\r
</div>\r
</body>\r
SYNOPSIS
--------
-'git-repack' [-a] [-d] [-l] [-n]
+'git-repack' [-a] [-d] [-f] [-l] [-n] [-q]
DESCRIPTION
-----------
Pass the `--local` option to `git pack-objects`, see
gitlink:git-pack-objects[1].
+-f::
+ Pass the `--no-reuse-delta` option to `git pack-objects`, see
+ gitlink:git-pack-objects[1].
+
+-q::
+ Pass the `-q` option to `git pack-objects`, see
+ gitlink:git-pack-objects[1].
+
-n::
Do not update the server information with
`git update-server-info`.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<meta name="generator" content="AsciiDoc 7.0.2" />\r
<style type="text/css">\r
/* Debug borders */\r
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
</div>\r
<h2>SYNOPSIS</h2>\r
<div class="sectionbody">\r
-<p><em>git-update-index</em>\r
+<div class="verseblock">\r
+<div class="content"><em>git-update-index</em>\r
[--add] [--remove | --force-remove] [--replace]\r
[--refresh [-q] [--unmerged] [--ignore-missing]]\r
[--cacheinfo <mode> <object> <file>]*\r
[--chmod=(+|-)x]\r
+ [--assume-unchanged | --no-assume-unchanged]\r
+ [--really-refresh]\r
[--info-only] [--index-info]\r
[-z] [--stdin]\r
[--verbose]\r
- [--] [<file>]*</p>\r
+ [--] [<file>]*</div></div>\r
</div>\r
<h2>DESCRIPTION</h2>\r
<div class="sectionbody">\r
</p>\r
</dd>\r
<dt>\r
+--assume-unchanged, --no-assume-unchanged\r
+</dt>\r
+<dd>\r
+<p>\r
+ When these flags are specified, the object name recorded\r
+ for the paths are not updated. Instead, these options\r
+ sets and unsets the "assume unchanged" bit for the\r
+ paths. When the "assume unchanged" bit is on, git stops\r
+ checking the working tree files for possible\r
+ modifications, so you need to manually unset the bit to\r
+ tell git when you change the working tree file. This is\r
+ sometimes helpful when working with a big project on a\r
+ filesystem that has very slow lstat(2) system call\r
+ (e.g. cifs).\r
+</p>\r
+</dd>\r
+<dt>\r
--info-only\r
</dt>\r
<dd>\r
100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz</tt></pre>\r
</div></div>\r
</div>\r
+<h2>Using "assume unchanged" bit</h2>\r
+<div class="sectionbody">\r
+<p>Many operations in git depend on your filesystem to have an\r
+efficient <tt>lstat(2)</tt> implementation, so that <tt>st_mtime</tt>\r
+information for working tree files can be cheaply checked to see\r
+if the file contents have changed from the version recorded in\r
+the index file. Unfortunately, some filesystems have\r
+inefficient <tt>lstat(2)</tt>. If your filesystem is one of them, you\r
+can set "assume unchanged" bit to paths you have not changed to\r
+cause git not to do this check. Note that setting this bit on a\r
+path does not mean git will check the contents of the file to\r
+see if it has changed — it makes git to omit any checking and\r
+assume it has <strong>not</strong> changed. When you make changes to working\r
+tree files, you have to explicitly tell git about it by dropping\r
+"assume unchanged" bit, either before or after you modify them.</p>\r
+<p>In order to set "assume unchanged" bit, use <tt>--assume-unchanged</tt>\r
+option. To unset, use <tt>--no-assume-unchanged</tt>.</p>\r
+<p>The command looks at <tt>core.ignorestat</tt> configuration variable. When\r
+this is true, paths updated with <tt>git-update-index paths…</tt> and\r
+paths updated with other git commands that update both index and\r
+working tree (e.g. <tt>git-apply --index</tt>, <tt>git-checkout-index -u</tt>,\r
+and <tt>git-read-tree -u</tt>) are automatically marked as "assume\r
+unchanged". Note that "assume unchanged" bit is <strong>not</strong> set if\r
+<tt>git-update-index --refresh</tt> finds the working tree file matches\r
+the index (use <tt>git-update-index --really-refresh</tt> if you want\r
+to mark them as "assume unchanged").</p>\r
+</div>\r
<h2>Examples</h2>\r
<div class="sectionbody">\r
<p>To update and refresh only the files already checked out:</p>\r
<div class="content">\r
<pre><tt>$ git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh</tt></pre>\r
</div></div>\r
+<p>On an inefficient filesystem with <tt>core.ignorestat</tt> set:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git update-index --really-refresh <b>(1)</b>\r
+$ git update-index --no-assume-unchanged foo.c <b>(2)</b>\r
+$ git diff --name-only <b>(3)</b>\r
+$ edit foo.c\r
+$ git diff --name-only <b>(4)</b>\r
+M foo.c\r
+$ git update-index foo.c <b>(5)</b>\r
+$ git diff --name-only <b>(6)</b>\r
+$ edit foo.c\r
+$ git diff --name-only <b>(7)</b>\r
+$ git update-index --no-assume-unchanged foo.c <b>(8)</b>\r
+$ git diff --name-only <b>(9)</b>\r
+M foo.c\r
+\r
+<b>(1)</b> forces lstat(2) to set "assume unchanged" bits for paths\r
+ that match index.\r
+<b>(2)</b> mark the path to be edited.\r
+<b>(3)</b> this does lstat(2) and finds index matches the path.\r
+<b>(4)</b> this does lstat(2) and finds index does not match the path.\r
+<b>(5)</b> registering the new version to index sets "assume unchanged" bit.\r
+<b>(6)</b> and it is assumed unchanged.\r
+<b>(7)</b> even after you edit it.\r
+<b>(8)</b> you can tell about the change after the fact.\r
+<b>(9)</b> now it checks with lstat(2) and finds it has been changed.</tt></pre>\r
+</div></div>\r
</div>\r
<h2>Configuration</h2>\r
<div class="sectionbody">\r
in the index and the file mode on the filesystem if they differ only on\r
executable bit. On such an unfortunate filesystem, you may\r
need to use <tt>git-update-index --chmod=</tt>.</p>\r
+<p>The command looks at <tt>core.ignorestat</tt> configuration variable. See\r
+<em>Using "assume unchanged" bit</em> section above.</p>\r
</div>\r
<h2>See Also</h2>\r
<div class="sectionbody">\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 27-Dec-2005 00:16:52 PDT\r
+Last updated 22-Feb-2006 10:44:48 UTC\r
</div>\r
</div>\r
</body>\r
SYNOPSIS
--------
+[verse]
'git-update-index'
[--add] [--remove | --force-remove] [--replace]
[--refresh [-q] [--unmerged] [--ignore-missing]]
[--cacheinfo <mode> <object> <file>]\*
[--chmod=(+|-)x]
+ [--assume-unchanged | --no-assume-unchanged]
+ [--really-refresh]
[--info-only] [--index-info]
[-z] [--stdin]
[--verbose]
--chmod=(+|-)x::
Set the execute permissions on the updated files.
+--assume-unchanged, --no-assume-unchanged::
+ When these flags are specified, the object name recorded
+ for the paths are not updated. Instead, these options
+ sets and unsets the "assume unchanged" bit for the
+ paths. When the "assume unchanged" bit is on, git stops
+ checking the working tree files for possible
+ modifications, so you need to manually unset the bit to
+ tell git when you change the working tree file. This is
+ sometimes helpful when working with a big project on a
+ filesystem that has very slow lstat(2) system call
+ (e.g. cifs).
+
--info-only::
Do not create objects in the object database for all
<file> arguments that follow this flag; just insert
------------
+Using "assume unchanged" bit
+----------------------------
+
+Many operations in git depend on your filesystem to have an
+efficient `lstat(2)` implementation, so that `st_mtime`
+information for working tree files can be cheaply checked to see
+if the file contents have changed from the version recorded in
+the index file. Unfortunately, some filesystems have
+inefficient `lstat(2)`. If your filesystem is one of them, you
+can set "assume unchanged" bit to paths you have not changed to
+cause git not to do this check. Note that setting this bit on a
+path does not mean git will check the contents of the file to
+see if it has changed -- it makes git to omit any checking and
+assume it has *not* changed. When you make changes to working
+tree files, you have to explicitly tell git about it by dropping
+"assume unchanged" bit, either before or after you modify them.
+
+In order to set "assume unchanged" bit, use `--assume-unchanged`
+option. To unset, use `--no-assume-unchanged`.
+
+The command looks at `core.ignorestat` configuration variable. When
+this is true, paths updated with `git-update-index paths...` and
+paths updated with other git commands that update both index and
+working tree (e.g. `git-apply --index`, `git-checkout-index -u`,
+and `git-read-tree -u`) are automatically marked as "assume
+unchanged". Note that "assume unchanged" bit is *not* set if
+`git-update-index --refresh` finds the working tree file matches
+the index (use `git-update-index --really-refresh` if you want
+to mark them as "assume unchanged").
+
+
Examples
--------
To update and refresh only the files already checked out:
$ git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh
----------------
+On an inefficient filesystem with `core.ignorestat` set:
+
+------------
+$ git update-index --really-refresh <1>
+$ git update-index --no-assume-unchanged foo.c <2>
+$ git diff --name-only <3>
+$ edit foo.c
+$ git diff --name-only <4>
+M foo.c
+$ git update-index foo.c <5>
+$ git diff --name-only <6>
+$ edit foo.c
+$ git diff --name-only <7>
+$ git update-index --no-assume-unchanged foo.c <8>
+$ git diff --name-only <9>
+M foo.c
+
+<1> forces lstat(2) to set "assume unchanged" bits for paths
+ that match index.
+<2> mark the path to be edited.
+<3> this does lstat(2) and finds index matches the path.
+<4> this does lstat(2) and finds index does not match the path.
+<5> registering the new version to index sets "assume unchanged" bit.
+<6> and it is assumed unchanged.
+<7> even after you edit it.
+<8> you can tell about the change after the fact.
+<9> now it checks with lstat(2) and finds it has been changed.
+------------
+
Configuration
-------------
executable bit. On such an unfortunate filesystem, you may
need to use `git-update-index --chmod=`.
+The command looks at `core.ignorestat` configuration variable. See
+'Using "assume unchanged" bit' section above.
+
See Also
--------