Re: how to use git merge -s subtree?
- From
Sean <seanlkml@sympatico.ca>
- Date
- Jan 6, 2008, 01:17 UTC
- Message-ID
- <BAYC1-PASMTP12374B54BA370A1E1C6E78AE4E0@CEZ.ICE>
- In-Reply-To
- <20080105230004.GY29972@genesis.frugalware.org>
On Sun, 6 Jan 2008 00:00:04 +0100 Miklos Vajna <vmiklos@frugalware.org> wrote:
Show 18 quoted lines
> i recently noticed that the subtree merge strategy is missing from > merge-strategies.txt an i tried to first figure out how it works. i got > it to work, but i'm not 100% sure about i'm using it the way i'm > supposed to. > > here is what i do: > > 1) git remote add B /path/to/B.git > 2) git fetch > 3) mkdir B > 4) touch B/.gitignore > 5) git add B/.gitignore > 6) git commit -m "add empty B directory" > 7) git merge -s subtree B/master > > and yes, it works pretty well, but is this the right way? or is it > possible to somehow avoid steps 3..6? >
Hi Miklos,
Here's another way that is perhaps a little cleaner:
$ git remote add -f B /path/to/B $ git merge -s ours --no-commit B/master $ git read-tree --prefix=sub/ -u B/master $ git commit -m "subtree merged B"
The first line creates and fetches the remote. The second line initiates a merge, but stops before committing it. The third line reads B/master into the subdirectory "sub", at which point all that remains is committing the completed merge.
HTH, Sean