18 如何仅克隆Git存储库的子目录? 我有我的Git存储库,它的根目录有两个子目录: /finisht /static 在SVN中时,/finisht在一个地方/static签出,而在其他地方签出,就像这样: svn co svn+ssh://admin@domain.com/home/admin/repos/finisht/static static 有没有办法用Git做到这一点? 1409 git repository subdirectory git-clone sparse-checkout
21 从存储库检索单个文件 从远程git存储库中获取单个文件的内容的最有效的机制是什么(相对于所传输的数据和所使用的磁盘空间)? 到目前为止,我已经设法提出了: git clone --no-checkout --depth 1 git@github.com:foo/bar.git && cd bar && git show HEAD:path/to/file.txt 这似乎仍然过高。 从仓库中获取多个文件呢? 220 git git-checkout sparse-checkout git-sparse-checkout
9 如何git reset --hard子目录? 更新²:使用Git 2.23(2019年8月)时,有一个新命令git restore可以执行此操作,请参见接受的答案。 更新:从Git 1.8.3开始,这将更加直观,请参阅我自己的答案。 想象一下以下用例:我想摆脱Git工作树的特定子目录中的所有更改,而所有其他子目录保持不变。 我可以git checkout .,但是git checkout。添加稀疏检出排除的目录 有git reset --hard,但不允许我对子目录进行操作: > git reset --hard . fatal: Cannot do hard reset with paths. 再说一遍:为什么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 … 196 git reset git-reset sparse-checkout
9 在Git中签出子目录? 是否可以在Git中检出存储库的子目录? 想象一下,我正在设置一个新的WordPress安装。我将为插件和主题自定义创建两个新目录: wordpress/wp-content/plugins/myplugins/ wordpress/wp-content/themes/mytheme/ 我想通过Git维护这些目录。在Subversion中,我将通过具有trunk/myplugins/和trunk/mytheme/目录并签出子目录来实现此目的。Git是否可以使用单个存储库来完成相同任务? 作为长期使用SVN的用户,很少接触Git,我可能会错过某些Git范例。 编辑: 存储不同内容的多个分支是处理此问题的一种有趣方法。 160 git sparse-checkout
7 您可以使用Subversion进行部分结帐吗? 如果我在trunk /下有20个目录,每个目录中都有很多文件,并且只需要其中3个目录,那么是否可以仅在trunk /下有这3个目录来进行Subversion签出? 155 svn sparse-checkout
7 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 我想要的是能够从上述存储库中产生此布局: repo/.git/ repo/script1.pl repo/script2.pl 但是,使用当前的稀疏签出功能,似乎只能 repo/.git/ repo/perl/script1.pl repo/perl/script2.pl 这不是我想要的。 70 git version-control sparse-checkout