请问如何用 git 工具下载 github 上的单个目录

2017-09-20 23:32:08 +08:00
 saximi

我想用 GIT 从 GITHUB 上下载单个目录,在网上看到如下的描述。

Git1.7.0 以后加入了 Sparse Checkout 模式,这使得 Check Out 指定文件或者文件夹成为可能。

具体实现如下:
$mkdir project_folder
$cd project_folder
$git init
$git remote add -f origin <url>

上面的代码会帮助你创建一个空的本地仓库,同时将远程 Git Server URL 加入到 Git Config 文件中。 
接下来,我们在 Config 中允许使用 Sparse Checkout 模式:
$git config core.sparsecheckout true

接下来你需要告诉 Git 哪些文件或者文件夹是你真正想 Check Out 的,你可以将它们作为一个列表保存在 .git/info/sparse-checkout 文件中。 

例如:
$echo “ libs ” >> .git/info/sparse-checkout
$echo “ apps/register.go ” >> .git/info/sparse-checkout
$echo “ resource/css ” >> .git/info/sparse-checkout

最后,你只要以正常方式从你想要的分支中将你的项目拉下来就可以了:
$git pull origin master

我想下载的目录如下: https://github.com/geekan/scrapy-examples/tree/master/qqnews

在按照上面的描述执行时,对于这个操作,请问<url>应该输入什么呢? "git remote add -f origin <url>"

另外,执行后面 echo 开头的命令时,我实际应该执行的是否是 $echo “ scrapy-examples/qqnew ” >> .git/info/sparse-checkout

恳请指点,感谢!

4118 次点击
所在节点    程序员
18 条回复
codeyung
2017-09-20 23:45:04 +08:00
git init www.a.com
cd www.a.com
git remote add origin git@gitlab.xxxi.com:test/a.git
git config core.sparsecheckout true
echo 'projectName/target/?path/?path/' >> .git/info/sparse-checkout
git pull origin master
大概就是这个意思的
codeyung
2017-09-20 23:45:42 +08:00
我都是这样用~ 比较方便
KeepPro
2017-09-20 23:49:24 +08:00
url 正常填,然后在那个配置文件里写上你的这个 qqnews 路径即可。然后正常拉去整个库。
saximi
2017-09-20 23:55:28 +08:00
@KeepPro url 正常填是怎么填?以我的例子而言,是否就是填 https://github.com/geekan
saximi
2017-09-20 23:57:05 +08:00
@KeepPro 实际上,我这么运行会报错。
```
$ git remote add -f origin https : //github.com/geekan
fatal: remote origin already exists.
```
saximi
2017-09-21 00:06:39 +08:00
@codeyung git remote add origin git@gitlab.xxxi.com:test/a.git 对于这个写法不是很明白,有具体的例子么?
ETiV
2017-09-21 02:12:39 +08:00
骗子 我还以为能只拉指定目录,结果还是都拉回来的 😂
q8515620
2017-09-21 02:53:23 +08:00
是第一次用 git 吗? GitHub 项目里有个 clone 按钮,复制里面的 URL 即可
oglop
2017-09-21 04:00:18 +08:00
如果 repo 很大 即使使用了--depth 1 还是会很慢,因为 github 不让用 git archive, 所以你可以借助

svn export https://github.com/geekan/scrapy-examples/tree/master/qqnews
lovestudykid
2017-09-21 04:25:03 +08:00
svn 可以做到,github 本来也支持 svn,具体可以搜一下怎么做。
oglop
2017-09-21 04:32:01 +08:00
@oglop 修正一下我上面地址输错了 把 tree 换成 trunk
StephenChow
2017-09-21 08:58:35 +08:00
@ETiV 果然是,objects 下确实会有全部内容,工作目录下倒是只有指定目录
KeepPro
2017-09-21 10:04:59 +08:00
@saximi 这个报错是说你已经拉取过了,本地已经添加了这个 remote,你需要把之前的删掉
iahu
2017-09-22 17:51:33 +08:00
saximi
2017-09-23 21:05:41 +08:00
@iahu 我的是 WINDOWS7+PYTHON3 的环境,为了用 GIT,我装了 Git Bash 这个工具,但是在命令窗口中输入 svn 时提示 bash svn: command not found。 是不是我的 GIT 工具装得不对?还是我要专门安装 SVN ?
saximi
2017-09-23 23:53:06 +08:00
@oglop 我在 WINDOWS 上装了 TortoiseSVN,但是在 Git bash 中执行 svn export 命令还是提示 bash svn:command not found,是不是要先做什么设置?
saximi
2017-09-24 00:11:28 +08:00
@iahu 您给的这个网址上好像说只要安装两个工具就直接可以从 GITHUB 按目录下载,而不需要 SVN,这两个工具是 GitZip 和 DownGit,但是这两个工具都要翻墙下载的,找了国内的几个 CHROME 下载网址都找不到呢?
iahu
2017-09-25 16:07:29 +08:00
@saximi 安装了 TortoiseSVN,如果不能在 git bash 里使用 svn 命令,可能是你没有设置 svn 的环境变量。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/392404

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX