标签: sparse-checkout

如何克隆仅Git存储库的子目录?

我有我的Git存储库,它在根目录下有两个子目录:

/finisht
/static
Run Code Online (Sandbox Code Playgroud)

当这是在SVN,/finisht在一个地方签出,而/static在其他地方查出来,像这样:

svn co svn+ssh://admin@domain.com/home/admin/repos/finisht/static static
Run Code Online (Sandbox Code Playgroud)

有没有办法用Git做到这一点?

git repository git-clone subdirectory sparse-checkout

1298
推荐指数
18
解决办法
73万
查看次数

417
推荐指数
15
解决办法
49万
查看次数

从存储库中检索单个文件

从远程git存储库获取单个文件内容的最有效机制(关于传输的数据和使用的磁盘空间)是什么?

到目前为止,我已经设法提出:

git clone --no-checkout --depth 1 git@github.com:foo/bar.git && cd bar && git show HEAD:path/to/file.txt
Run Code Online (Sandbox Code Playgroud)

这仍然有点矫枉过正.

如何从回购中获取多个文件?

git git-checkout sparse-checkout git-sparse-checkout

206
推荐指数
11
解决办法
21万
查看次数

如何git reset --hard一个子目录?

更新:从Git 1.8.3开始,这将更直观地工作,请参阅我自己的答案.

想象一下以下用例:我想摆脱我的Git工作树的特定子目录中的所有更改,保留所有其他子目录.

什么是适合此操作的Git命令?

下面的脚本说明了这个问题.在How to make files注释下面插入适当的命令- 当前命令将恢复a/c/ac应该由稀疏检出排除的文件.请注意,我希望明确恢复a/aa/b,我只"知道" a,并希望下面恢复一切.编辑:我也不"知道" b,或者与其他目录位于同一级别a.

#!/bin/sh

rm -rf repo; git init repo; cd repo
for f in a b; do …
Run Code Online (Sandbox Code Playgroud)

git reset sparse-checkout git-reset

178
推荐指数
7
解决办法
12万
查看次数

在Git中查看子目录?

是否可以在Git中检出存储库的子目录?

想象一下,我正在设置一个新的WordPress安装.我将为我的插件和主题自定义创建两个新目录:

  • wordpress/wp-content/plugins/myplugins/
  • wordpress/wp-content/themes/mytheme/

我想通过Git维护这些目录.在Subversion中,我将通过拥有trunk/myplugins/trunk/mytheme/目录并检查子目录来实现这一目标.Git是否有办法使用单个存储库完成相同的任务?

我可能只是在一些Git范例中错过了这条船,因为很长一段时间的SVN用户很少接触Git.

编辑: 存储不同内容的多个分支是处理此问题的有趣方式.

git sparse-checkout

154
推荐指数
5
解决办法
12万
查看次数

你能用Subversion做部分结账吗?

如果我在trunk下有20个目录,每个目录中有很多文件,只需要其中3个目录,是否可以在trunk下只有3个目录进行Subversion结账?

svn sparse-checkout

150
推荐指数
4
解决办法
10万
查看次数

在Git 1.7.0中稀疏结账?

使用Git 1.7.0中新的稀疏结账功能,是否可以像在SVN中一样获取子目录的内容?我找到了这个例子,但它保留了完整的目录结构.想象一下,我只想要'perl'目录的内容,而没有名为'perl'的实际目录.

- 编辑 -

例:

我的git存储库包含以下路径

repo/.git/
repo/perl/
repo/perl/script1.pl
repo/perl/script2.pl
repo/images/
repo/images/image1.jpg
repo/images/image2.jpg
repo/doc/
repo/doc/readme.txt
repo/doc/help.txt
Run Code Online (Sandbox Code Playgroud)

我想要的是能够从上面的存储库中生成这种布局:

repo/.git/
repo/script1.pl
repo/script2.pl
Run Code Online (Sandbox Code Playgroud)

然而,使用当前的稀疏结账功能,似乎只能获得

repo/.git/
repo/perl/script1.pl
repo/perl/script2.pl
Run Code Online (Sandbox Code Playgroud)

这不是我想要的.

git version-control sparse-checkout

68
推荐指数
4
解决办法
4万
查看次数

Jenkins和Git稀疏结账

我在Git中有一个大型存储库.如何在Jenkins中创建一个只从项目中检出一个子文件夹的作业?

git sparse-checkout jenkins

58
推荐指数
2
解决办法
5万
查看次数

github/git Checkout 在 Windows 上返回“错误:无效路径”

当我尝试从 github 签出存储库时,出现错误:

error: invalid path 'configs/perl-modules/DIST.64/perl-HTML-Tree-1:5.03-1.el6.noarch.rpm'
Run Code Online (Sandbox Code Playgroud)

我怀疑问题是路径包含一个 : 这在 Windows 上是非法的。

在研究错误后,我找到了 2 个可能的答案:
1) 更改存储库文件上的路径。 不幸的是,这是团队资源,在可预见的未来无法修复。
2)使用稀疏结帐。 我已经尝试过没有效果,如下所示:

$ git clone -n​​ git@github.com:XXXXXX/deploy.git
克隆到 'deploy'...
远程:枚举对象:57,完成。
远程:计数对象:100% (57/57),完成。
远程:压缩对象:100% (49/49),完成。
远程:总计 86457 (delta 10),重用 22 (delta 8),打包重用 86400
接收对象:100% (86457/86457),1.50 GiB | 4.73 MiB/s,完成。
解析增量:100% (59779/59779),完成。
$ cd deploy/
$ git config core.sparsecheckout true
$ echo www >> .git/info/sparse-checkout
$ git checkout centos6
错误:路径无效'configs/perl-modules/DIST.64/perl-HTML-Tree-1 :5.03-1.el6.noarch.rpm'
错误:无效路径 'configs/perlbrew/perls/perl-5.24.1/man/man3/App::Cpan.3'

. (对许多文件重复)

这是使用 Git for Windows“git version 2.28.0.windows.1”完成的。我还尝试了两种类型的行尾并使用各种版本的 .git/info/sparse-checkout …

git github sparse-checkout

37
推荐指数
8
解决办法
4万
查看次数

使用git仅克隆一个子目录

我有一个包含子目录的git存储库.示例dirA/dirB.有没有办法git clone在Unix服务器上只从子目录(dirB)中提取文件?

除了克隆之外还有其他一些git命令可以执行此操作吗?

我如何git特定文件?

git sparse-checkout

33
推荐指数
3
解决办法
7万
查看次数