实现从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文件夹 ,比较耗时。

    推荐阅读