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

How to merge by subtree while preserving history?

From
David Reitter <david.reitter@gmail.com>
Date
Mar 26, 2009, 22:59 UTC
Message-ID
<A5C2B218-4E4F-4C05-959D-5B6E9C619DDB@gmail.com>

I have two separately developed projects (foo, bar) which I'd like to merge; the contents of foo should, initially, go in a subdirectory of bar.

I'm aware of two methods: moving (renaming) everything within foo into foo-dir, and then just pulling foo into bar.

This works beautifully, except that the big rename causes havoc w.r.t. to the files histories, i.e. git-log needs a "--follow" argument now, and "diff-tree" can't track changes when given the new file name. No good.

I've also tried the method described in [1], but it seems that all history is lost here (the text could point this out..) I've tried to "git pull -s subtree foo master" directly as well, but then it put foo into strange places (and lost the history).

So, I'm at a loss.  Suggestions much appreciated.
[1] http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html
Next: Miklos Vajna
Message 1 of 4 in “How to merge by subtree while preserving history?”
  1. David ReitterMar 26, 2009
  2. Miklos VajnaMar 27, 2009
  3. David ReitterMar 27, 2009
  4. Junio C HamanoMar 27, 2009

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.