我有我的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 repo中仅查看一个文件?
从远程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 1.8.3开始,这将更直观地工作,请参阅我自己的答案.
想象一下以下用例:我想摆脱我的Git工作树的特定子目录中的所有更改,保留所有其他子目录.
我可以git checkout .,但git checkout.添加稀疏结帐排除的目录
有git reset --hard,但它不会让我为子目录这样做:
> git reset --hard .
fatal: Cannot do hard reset with paths.
Run Code Online (Sandbox Code Playgroud)
再说一遍:为什么git不能通过路径进行硬/软复位?
我可以使用反向修补当前状态git diff subdir | patch -p1 -R,但这是一种相当奇怪的方法.
什么是适合此操作的Git命令?
下面的脚本说明了这个问题.在How to make files注释下面插入适当的命令- 当前命令将恢复a/c/ac应该由稀疏检出排除的文件.请注意,我不希望明确恢复a/a和a/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中检出存储库的子目录?
想象一下,我正在设置一个新的WordPress安装.我将为我的插件和主题自定义创建两个新目录:
wordpress/wp-content/plugins/myplugins/ wordpress/wp-content/themes/mytheme/我想通过Git维护这些目录.在Subversion中,我将通过拥有trunk/myplugins/和trunk/mytheme/目录并检查子目录来实现这一目标.Git是否有办法使用单个存储库完成相同的任务?
我可能只是在一些Git范例中错过了这条船,因为很长一段时间的SVN用户很少接触Git.
编辑: 存储不同内容的多个分支是处理此问题的有趣方式.
如果我在trunk下有20个目录,每个目录中有很多文件,只需要其中3个目录,是否可以在trunk下只有3个目录进行Subversion结账?
使用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中有一个大型存储库.如何在Jenkins中创建一个只从项目中检出一个子文件夹的作业?
当我尝试从 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存储库.示例dirA/dirB.有没有办法git clone在Unix服务器上只从子目录(dirB)中提取文件?
除了克隆之外还有其他一些git命令可以执行此操作吗?
我如何git特定文件?
sparse-checkout ×10
git ×9
git-checkout ×2
file ×1
git-clone ×1
git-reset ×1
github ×1
jenkins ×1
repository ×1
reset ×1
subdirectory ×1
svn ×1