首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Git索引复制到临时文件夹中

将Git索引复制到临时文件夹中
EN

Stack Overflow用户
提问于 2018-09-06 22:51:59
回答 2查看 457关注 0票数 1

假设我有一个实用程序some-check {baseline_folder} {working_folder},它对文件集(而不是单个文件)进行一些比较。

我想在两个稍微不同的用例中使用这个实用程序:

  • 对照头修订对工作树进行验证;
  • 索引与头的预提交验证

第一个用例非常简单,因为将基线(即HEAD)放入临时文件夹并不是什么大事。

真正的问题是如何将索引放到某个文件夹中。我看到的唯一方法是:

  1. 创造一个藏物
  2. 立即把它放回去
  3. 使用git-archive通过存储引用创建zip
  4. 将其解压缩到临时文件夹
  5. 放下藏品

有什么不那么冗长的方法吗?

UPD:长话短说:问题是如何获得一个具有HEAD+stage的文件夹,但不需要修改/不跟踪。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-06 23:18:52

为了验证索引中的内容,可以这样将索引中的所有内容提取到临时工作树中:

代码语言:javascript
复制
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-ignoreexport-subst获得更多的控制。如果要使用该方法,可以使用git write-tree将当前索引转换为树对象,然后对该树对象使用git archive

还请注意,git write-tree方法使用未合并的索引引发错误,而git checkout-index方法只是从目标工作树中省略未合并的文件。

票数 4
EN

Stack Overflow用户

发布于 2018-09-06 23:05:31

有什么不那么冗长的方法吗?

更好的办法是:

代码语言:javascript
复制
git worktree

这使您可以将任何目录转换为git存储库的附件,使您能够同时签出两个不同的修订版。你可以根据你的需要添加尽可能多的附件,然后在不再需要的时候丢弃它们。例如,处理同一个库的两个版本非常有用(例如,它的最后一个稳定版本和开发库的技巧)。

这里有一个similar question。这应该符合你的需要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52213050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档