实现从Git远端仓库指定分支下载指定文件
实现从Git远端仓库指定分支下载指定文件
Git命令实现 git在1.7版本后增加了sparse checkout(稀疏检出)功能,使得git也能像svn那样下载项目指定文件。
#创建本地空仓库
cd git_repo
mkdir dev
cd dev
#连接远程仓库
git clone -n origin
#开启sparsecheckout功能
git config core.sparsecheckout true
#设置要克隆的仓库的子目录路径,"*"
echo "<指定路径>" >> .git/info/sparse-checkout
# git pull 拉取代码
git pull origin
# git checkout 如需添加指定路径,先在sparse-checkout中增加指定路径,再checkout
echo "<指定路径>" >> .git/info/sparse-checkout
git checkout
跟sparse checkout相关的两个文件
.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
sparsecheckout = true
[remote "origin"]
url = https://github.com/***/***.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
.git/info/sparse-checkout
src/main/java/com/csust/utils
JGit命令实现 使用JGIt实现从远端仓库拉取指定文件。
maven配置
org.eclipse.jgit
org.eclipse.jgit
5.6.0.201912101111-r
【实现从Git远端仓库指定分支下载指定文件】核心代码
Stirng url = "gitUrl";
String hash = "origin/" + branchName;
String subPath = "<指定文件路径>";
//初始化本地仓库
Git gitRepo = Git.cloneRepository().setURI(url).setDirectory(localPath).setNoCheckout(true).call();
//checkout指定文件||文件夹
gitRepo.checkout().setName(branchName).setStartpoint(hash).addPath(subPath).call();
gitRepo.getRepository().close();
存在的问题 还是会从远程仓库下载.git文件夹 ,比较耗时。
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 一个人的碎碎念
- 我从来不做坏事
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 从蓦然回首到花开在眼前,都是为了更好的明天。
- 西湖游
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现