在Git中,tree ish是什么意思?
我对如何使用git archive感到非常困惑 我有一个git存储库,顶层有Foo、Bar和Baz文件夹。我需要以SVN-ish的方式导出文件夹Foo,以便快速部署测试 我了解到我可以在一个简单的环境中使用在Git中,tree ish是什么意思?,git,git-archive,Git,Git Archive,我对如何使用git archive感到非常困惑 我有一个git存储库,顶层有Foo、Bar和Baz文件夹。我需要以SVN-ish的方式导出文件夹Foo,以便快速部署测试 我了解到我可以在一个简单的环境中使用git归档 但事情是这样的,以下方法很好: git archive master | tar -x -C ~/destination 它会在目标文件夹中生成Foo、Bar、Baz文件夹 但是,如果不是有效的对象名称,则以下内容将出错: git archive master/foo | tar
git归档
但事情是这样的,以下方法很好:
git archive master | tar -x -C ~/destination
它会在目标文件夹中生成Foo、Bar、Baz文件夹
但是,如果不是有效的对象名称,则以下内容将出错
:
git archive master/foo | tar -x -C ~/destination
文件
查看git archive
程序的概要,我发现它可以将[path]
作为参数(概要总结到相关部分):
git存档[路径…]
如果master/foo
不是tree-ish
,那么什么是?您可能想要的
git archive master foo | tar -x -C ~/destination
表达式master/foo
没有意义:master
是一个分支名,foo
是一个目录名,我猜是这样的
编辑:(已删除断开的链接。请参阅注释)。树ish是一种命名特定树的方法,可以是以下之一:
- 参考资料如:
- 头
- 标签
- 分支机构名称
- 带有遥控器的分支名称,如
origin/somebranch
- 散列
- 短散列
^
,~
。对于某些附加功能,参考还可以使用@{}
符号:
或HEAD^
将解析为HEAD的第一个父级HEAD^1
将解析为第二个父级头^2
将解析为第三个父级,以此类推,这是更为罕见的,也是HEAD^3
或HEAD~
将解析为HEAD的第一个父级HEAD~1
将解析为HEAD的第一个父级的第一个父级。这与HEAD~2
HEAD^^
将解析为当前HEADHEAD@{0}
将解析为前一个HEAD。这只能由引用使用,因为它使用引用日志。在HEAD@{1}
的情况下,每次提交、合并、签出都会更改HEAD的值,从而将其添加到日志中HEAD
将显示参考日志,您可以在其中看到HEAD的所有移动以及git reflog HEAD
等将正确解析的内容@{1}
HEAD@{2}~3
,somebranch^2~4
,c00e66e~4^2
,另一个分支^ ^ ^
因此,上述任何一种,及其组合,在文档中都是指树ish,这只是说明哪些树(或修订版)应该用于大多数git命令的一种方式
有关
和
的定义,请参阅手册页。你必须搜索这些术语。一般来说,
表示对git树对象的引用,但如果您传递引用树的对象类型(如提交或分支),git将自动使用引用的树。简短答案(TL;DR)
“Tree-ish”是指最终指向(子)目录的任何标识符(如中所述)
树(Git将目录称为“树”和“树对象”)
在原始海报中,foo
是他想要的目录
具体说明在Git中指定(子)目录的正确方法是使用
“树型”语法(第15项来自):
:
,例如标题:自述文件
,:自述文件
,主文件:./README
后缀:
后跟一个路径,将指定路径中的blob或树命名为
由冒号前面的部分命名的树对象
因此,换句话说,master:foo
是正确的语法,而不是master/foo
其他“树型”(加上提交型)
以下是提交ish和树ish标识符的完整列表(来自,):
指示树对象名称
<commit>
<tree-ish>
指示提交对象名称
<commit>
<tree-ish>
指示树、提交或标记对象名称。接受
参数最终希望对
对象进行操作,但会自动执行
取消引用
和指向
的
对象
<commit-ish>
指示提交或标记对象名称。接受
参数最终希望对
对象进行操作,但会自动执行
解除指向
对象的引用
<commit-ish>
不能用作提交ish的树ish标识符集是
:
,它直接将引导到目录树,而不是提交
物体。例如,HEAD:subdirectory
我是源代码管理和git的新手。这就是我所知道的。树是存储库中文件的结构。它类似于文件系统中的目录。请参阅- 树的意思是像树一样。它引用树的一部分或提交。您可以使用以下任意一种引用提交:提交的SHA-1散列的全部或部分、头指针、分支引用、标记引用。另一种方法使用上述任何方法以及提交的祖先或父级。例如: 从树上看 “树对象或可递归解除对树对象引用的对象。” commit、HEAD和tag是树型对象的示例。
master