From: Ping Yin Date: Tue, 12 May 2009 16:59:50 GMT Subject: Re: How to create a new commit with the content of some commit? Message-ID: <46dff0320905120959sc69eec9h23cd8ac6b489e5b6@mail.gmail.com> In-Reply-To: <20090512165103.GE29566@coredump.intra.peff.net> On Wed, May 13, 2009 at 12:51 AM, Jeff King wrote: > On Wed, May 13, 2009 at 12:43:33AM +0800, Ping Yin wrote: > >> > You can just munge the index directly, and skip the working tree >> > entirely: >> > >> >  rm .git/index >> >  git read-tree b >> >  git commit -m 'the copy of b' >> >> In a non-conflict status, "git read-tree b" will update the index to >> full match the tree of b, so "rm .git/index" is unnecessary, right? > > For some reason, I was thinking that entries in the index that were not > in "b" would remain, but that is not actually the case. So yes, I think > you can do it without removing the index (and you are better off to do > so, since the index also contains the stat cache for your worktree, so > it is more efficient). > > You can also add "-u" as Junio suggested to update the working tree > during that step, which should be more efficient. I don't want to touch the working directory, and -m will keep the stat cache in the index, so i think "git read-tree -m b" is the best.