git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: "stage files" vs "cached files"

From
Andy Whitcroft <apw@shadowen.org>
Date
Oct 19, 2006, 15:58 UTC
Message-ID
<4537A0BC.5040301@shadowen.org>
In-Reply-To
<eh7vl2$unr$1@sea.gmane.org>
Jerome Lovy wrote:
Show 16 quoted lines
> Hi,
> 
> after having read tutorial1+2, I thought the following were more or less
> synonyms: index ~ directory cache ~ staging area
> 
> But then I discover that --cache and --staged are two different things,
> notably when using ls-files.
> 
> The documentation states indeed:
>  "--cached   Show cached files in the output"
>  "--stage    Show stage files in the output"
> 
> I'm a bit confused. Is maybe a "stage file" entry missing in the glossary?
> 
> TIA for clarification/pointer.
> Jérôme

This is not stage as in staging area, its stage as in 'at a cirtain stage'. It refers to files which are in the index but are in conflict.

The cache doesn't just contain an entry for each file. It contains an entry for each file version in a merge situation. These are referred to as 'stages'. There is a description in the documentation about how they get pushed 'down' to stage 0 and then are deemed merged (see Documentation/core-tutorial.txt).

Below is the git ls-files --cached, and --stage output from a repo which has one file 'bar' which is fine and another 'bar' which has a conflict.

  apw@pinky$ git ls-files --cached
  bar
  this
  this
  this
  apw@pinky$ git ls-files --stage
  100644 8dc5f23c673e9c1ac8dd3499f9acab11b093527f 0       bar
  100644 01e79c32a8c99c557f0757da7cb6d65b3414466d 1       this
  100644 fbbafbfdaadbff9c7f8db580f91a8ab5a0653704 2       this
  100644 10c8337d3d240283bdf35af68d17d1319ca069a4 3       this

Note that there is in fact three 'this's in the index. The first entry is bar which is in stage 0 and is merged fine. 'this' however appears three times. 1 represents the common parent of the merge (I believe) and 2 and 3 represent the conflicting options for that. The 'this' on disk has the mangled version with both sets of changes in, but this information can be used to show the actual files in the various forms.

  apw@pinky$ git cat-file blob :1:this
  1
  2
  3
  apw@pinky$ git cat-file blob :2:this
  1
  2b
  3
  apw@pinky$ git cat-file blob :3:this
  1
  2a
  3
  apw@pinky$ cat this
  1
  <<<<<<< HEAD/this
  2b
  =======
  2a
  >>>>>>> c2acfdd8e6a50e571a007744e023c65c7b188dbf/this
  3
-apw
Previous: Linus Torvalds
Message 3 of 3 in “"stage files" vs "cached files"”
  1. Jerome LovyOct 19, 2006
  2. Linus TorvaldsOct 19, 2006
  3. Andy WhitcroftOct 19, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.