summaryrefslogtreecommitdiff
path: root/Documentation/git-update-cache.txt
blob: 947f2bded0317bab04598d2fb9755db0995c6c45 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
git-update-cache(1)
===================
v0.1, May 2005

NAME
----
git-update-cache - Modifies the index or directory cache


SYNOPSIS
--------
'git-update-cache'
	     [--add] [--remove] [--refresh] [--replace]
	     [--ignore-missing]
	     [--force-remove]
	     [--cacheinfo <mode> <object> <file>]\*
	     [--] [<file>]\*

DESCRIPTION
-----------
Modifies the index or directory cache. Each file mentioned is updated
into the cache and any 'unmerged' or 'needs updating' state is
cleared.

The way "git-update-cache" handles files it is told about can be modified
using the various options:

OPTIONS
-------
--add::
	If a specified file isn't in the cache already then it's
	added.
	Default behaviour is to ignore new files.

--remove::
	If a specified file is in the cache but is missing then it's
	removed.
	Default behaviour is to ignore removed file.

--refresh::
	Looks at the current cache and checks to see if merges or
	updates are needed by checking stat() information.

--ignore-missing::
	Ignores missing files during a --refresh

--cacheinfo <mode> <object> <path>::
	Directly insert the specified info into the cache.
	
--force-remove::
	Remove the file from the index even when the working directory
	still has such a file. (Implies --remove.)

--replace::
	By default, when a file `path` exists in the index,
	git-update-cache refuses an attempt to add `path/file`.
	Similarly if a file `path/file` exists, a file `path`
	cannot be added.  With --replace flag, existing entries
	that conflicts with the entry being added are
	automatically removed with warning messages.

--::
	Do not interpret any more arguments as options.

<file>::
	Files to act on.
	Note that files begining with '.' are discarded. This includes
	`./file` and `dir/./file`. If you don't want this, then use	
	cleaner names.
	The same applies to directories ending '/' and paths with '//'

Using --refresh
---------------
'--refresh' does not calculate a new sha1 file or bring the cache
up-to-date for mode/content changes. But what it *does* do is to
"re-match" the stat information of a file with the cache, so that you
can refresh the cache for a file that hasn't been changed but where
the stat entry is out of date.

For example, you'd want to do this after doing a "git-read-tree", to link
up the stat cache details with the proper files.

Using --cacheinfo
-----------------
'--cacheinfo' is used to register a file that is not in the current
working directory.  This is useful for minimum-checkout merging.

To pretend you have a file with mode and sha1 at path, say:

 $ git-update-cache --cacheinfo mode sha1 path

To update and refresh only the files already checked out:

   git-checkout-cache -n -f -a && git-update-cache --ignore-missing --refresh


Author
------
Written by Linus Torvalds <torvalds@osdl.org>

Documentation
--------------
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the link:git.html[git] suite