Re: Decompressing a tree to a location other than the working directory
From: Jakub Narebski <hidden>
Date: 2016-06-15 22:49:15
Joshua Shrader [off-list ref] writes:
git checkout allows one to checkout a particular version of a certain path in the working directory. Are there accessible plumbing commands that can be used to accomplish the same thing, but change the target directory. For example, if I wanted to checkout a certain path, but wanted to check it out somewhere external to my working directory / repository?
Porcelain way: check out first example in git-archive(1) manpage
EXAMPLES
========
git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)
Create a tar archive that contains the contents of the latest commit
on the current branch, and extract it in the /var/tmp/junk directory.
Plumbing way: after preparing index (it can be separate file than .git/index),
use "git checkout-index" as desceived in second example on manpage:
EXAMPLES
========
Using `git checkout-index` to "export an entire tree"
The prefix ability basically makes it trivial to use git check-
out-index as an "export as tree" function. Just read the desired
tree into the index, and do:
$ git checkout-index --prefix=git-export-dir/ -a
`git checkout-index` will "export" the index into the specified direc-
tory.
The final "/" is important. The exported name is literally just pre-
fixed with the specified string
--
Jakub Narebski
Poland
ShadeHawk on #git