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

rm and mv commands: should I use them?

From
JHJon Hancock <redstarling@gmail.com>
Date
Jan 6, 2008, 07:55 UTC
Message-ID
<379EDA94-A67B-483A-BC5F-E961DD52AD0C@gmail.com>

Hello list, I'm fairly new to git and coming from svn and have tasted hg and bzr along the decision path.

Here's my newbie issue:

In reading Aristotle Pagaltzis's article http://plasmasturm.org/log/ 487/ the author stresses that a major difference between git and something like bzr or svn is that git tracks content and not metadata (or at least less metadata); meaning is inferred through content and less through metadata.

The heart of Pagaltzis's argument copied here: <COPY> Among the systems I did look into, there are really just two contenders: git and Mercurial. All the other systems track metadata; git and hg just track content and infer the metadata.

By tracking metadata I mean that these systems keep a record of what steps were taken. “This file had its name changed.” “Those modifications came from that file in that branch.” “This file was copied from that file.” Tracking content alone means doing none of that. When you commit, the VCS just records what the tree looks like. It doesn’t care about how the tree got that way. When you ask it about two revisions, it looks at the tree beforehand and the tree afterwards, and figures out what happened inbetween. A file is not a unit that defines any sort of boundary in this view. The VCS always looks at entire trees; files have no individual identity separate from their trees at all.

As a consequence, whether you used VCS tools to manipulate your working copy or regular command line utilities or applied a patch or whatever is irrelevant. The resulting history is always the same. </COPY>

So, do I need to use git's mv and rm commands? Can't I just rename, add, and remove files using any means I like and then just ensure my "index" is staged properly when I do a commit? Additionally, is there a simple procedure with git to say: "I want to version exactly what is in my working tree. If I removed something or added something, just handle it". This is sort of what "git add ." does, but "git add" doesn't handling things I removed or moved, correct?

thanks, Jon
Next: David Brown
Message 1 of 11 in “rm and mv commands: should I use them?”
  1. Jon HancockJan 6, 2008
  2. David BrownJan 6, 2008
  3. Brian SwetlandJan 6, 2008
  4. Jeff KingJan 6, 2008
  5. Linus TorvaldsJan 6, 2008
  6. Jeff KingJan 7, 2008
  7. Junio C HamanoJan 7, 2008
  8. Jeff KingJan 7, 2008
  9. Robin RosenbergJan 7, 2008
  10. Jay SoffianJan 7, 2008
  11. David BrownJan 7, 2008

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.