我使用svn:externals从另一个SVN存储库中使用了两个SVN项目.
我怎样才能在Git中拥有相同的存储库布局结构?
是否可以在Git中检出存储库的子目录?
想象一下,我正在设置一个新的WordPress安装.我将为我的插件和主题自定义创建两个新目录:
wordpress/wp-content/plugins/myplugins/ wordpress/wp-content/themes/mytheme/我想通过Git维护这些目录.在Subversion中,我将通过拥有trunk/myplugins/和trunk/mytheme/目录并检查子目录来实现这一目标.Git是否有办法使用单个存储库完成相同的任务?
我可能只是在一些Git范例中错过了这条船,因为很长一段时间的SVN用户很少接触Git.
编辑: 存储不同内容的多个分支是处理此问题的有趣方式.
使用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大师,面对一个问题,我无法弄清楚如何修复.我有一个我的WordPress自定义骨架的回购,我已经添加了WordPress作为其原始回购的子模块git submodule add wp_repo_url.当我将我的repo克隆到本地机器时:
git clone --recursive https://github.com/user/repo local_dir
Run Code Online (Sandbox Code Playgroud)
它按预期下载了WP子模块,但问题是这样 - 实际文件只有20.7Mb,而且.git/modules/core/objects/pack我有一个巨大的124Mb .pack文件,我认为这个文件就像提交该子模块的历史/修订一样.
如何在克隆时重新添加子模块或修改以防止下载这个额外的重量?
更新:
在@iclmam的帮助下,我提出了以下设置:
如果我只是需要一个简单的干净安装最近的WP版本,我将改为wp目录并采用旧的方式:
curl -L -O http://wordpress.org/latest.zip
unzip latest.zip
mv wordpress/* .
rm latest.zip
rm -rf wordpress
Run Code Online (Sandbox Code Playgroud)不是一个完美的解决方案(我想尽可能地自动化所有东西),但它现在有效.
对原始问题的任何建议表示赞赏.
git submodule update已支持--depth此答案中所述的选项。
但是我们仍然无法轻松确定深度值,这可能会使 git 无法找到子模块的预期修订版。
浅层更新子模块是否有真正的解决方案?
对于普通的git仓库,你可以这样做:
git clone --branch 4.1.1 https://github.com/WordPress/WordPress.git . --depth 1
Run Code Online (Sandbox Code Playgroud)
这将在标签4.1.1上提供WP回购
对于一个子模块我确实得到了以下但我无法弄清楚如何只为一个标签.
git submodule add --depth 1 https://github.com/WordPress/WordPress.git wp
Run Code Online (Sandbox Code Playgroud)
如何在1个深度处将子模块签出到1个标签?
我不介意之后再做一些命令,但如果可能的话,在一个命令中甚至更好.
TLDR: 我想要一个标签的子模块.哪个.git(/ module)文件夹尽可能小.
我正在GitHub上建立一个新的Java项目,我将把一些Apache Commons库作为依赖项.
确定我的项目需要那些jar文件的最佳实践是什么?我应该将依赖项上传到我的GitHub存储库(丑陋)吗?或者使用类似Maven的工具?
或者有没有办法链接另一个git存储库中的文件?Apache为它们的库提供了git存储库.它们是只读的,但我很好,因为我只想使用罐子.坏的是它们包含所有的来源,我只关心编译的jar.看来我们不能git submodule只是一个档案.
我有一个存储库,有两个分支(master和gh-pages).我的master分支的文件夹结构如下所示:
/dist
/js
/css
/other-folders
Run Code Online (Sandbox Code Playgroud)
在我的gh-pages分支中,我有一个_include包含一些文件的文件夹.我想与我的分支在/dist/css和/dist/js文件夹中共享我的代码gh-pages,以便我的gh-pages文件夹结构如下所示:
/_include
/js
/css
Run Code Online (Sandbox Code Playgroud)
要么
/_include
/dist
/js
/css
Run Code Online (Sandbox Code Playgroud)
git可以这样吗?我不能只使用
git subtree push --prefix dist origin gh-pages
Run Code Online (Sandbox Code Playgroud)
因为那只会复制/dist到/dist我的gh-pages分支中的另一个文件夹
我没有问题使用git命令执行此操作,如将Git子模块设置为浅克隆和稀疏签出一样?但是我有一个使用Jenkins的项目,并且正在Groovy Pipeline语法中使用checkout()函数。我找不到任何将--depth选项传递给git子模块更新命令的选项。