假设我有一个实用程序some-check {baseline_folder} {working_folder},它对文件集(而不是单个文件)进行一些比较。
我想在两个稍微不同的用例中使用这个实用程序:
第一个用例非常简单,因为将基线(即HEAD)放入临时文件夹并不是什么大事。
真正的问题是如何将索引放到某个文件夹中。我看到的唯一方法是:
git-archive通过存储引用创建zip有什么不那么冗长的方法吗?
UPD:长话短说:问题是如何获得一个具有HEAD+stage的文件夹,但不需要修改/不跟踪。
发布于 2018-09-06 23:18:52
为了验证索引中的内容,可以这样将索引中的所有内容提取到临时工作树中:
tmpdir=$(mktemp -d) # or your other chosen method
trap "rm -rf $tmpdir" 0 1 2 3 15 # do something different in other languages
GIT_WORK_TREE=$tmpdir git checkout-index --all确保临时目录存在且为空(此处的mktemp -d执行此操作),并确保完成时进行清理(此处的trap执行此操作)。
注意,属性规则将应用于git checkout-index步骤。使用git archive,您可以通过export-ignore和export-subst获得更多的控制。如果要使用该方法,可以使用git write-tree将当前索引转换为树对象,然后对该树对象使用git archive。
还请注意,git write-tree方法使用未合并的索引引发错误,而git checkout-index方法只是从目标工作树中省略未合并的文件。
发布于 2018-09-06 23:05:31
有什么不那么冗长的方法吗?
更好的办法是:
git worktree这使您可以将任何目录转换为git存储库的附件,使您能够同时签出两个不同的修订版。你可以根据你的需要添加尽可能多的附件,然后在不再需要的时候丢弃它们。例如,处理同一个库的两个版本非常有用(例如,它的最后一个稳定版本和开发库的技巧)。
这里有一个similar question。这应该符合你的需要。
https://stackoverflow.com/questions/52213050
复制相似问题