V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
saximi
V2EX  ›  程序员

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

  •  
  •   saximi · 2017-09-20 23:32:08 +08:00 · 4126 次点击
    这是一个创建于 2655 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想用 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

    恳请指点,感谢!

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

    svn export https://github.com/geekan/scrapy-examples/tree/master/qqnews
    lovestudykid
        10
    lovestudykid  
       2017-09-21 04:25:03 +08:00
    svn 可以做到,github 本来也支持 svn,具体可以搜一下怎么做。
    oglop
        11
    oglop  
       2017-09-21 04:32:01 +08:00 via Android
    @oglop 修正一下我上面地址输错了 把 tree 换成 trunk
    StephenChow
        12
    StephenChow  
       2017-09-21 08:58:35 +08:00
    @ETiV 果然是,objects 下确实会有全部内容,工作目录下倒是只有指定目录
    KeepPro
        13
    KeepPro  
       2017-09-21 10:04:59 +08:00 via Android
    @saximi 这个报错是说你已经拉取过了,本地已经添加了这个 remote,你需要把之前的删掉
    iahu
        14
    iahu  
       2017-09-22 17:51:33 +08:00
    saximi
        15
    saximi  
    OP
       2017-09-23 21:05:41 +08:00
    @iahu 我的是 WINDOWS7+PYTHON3 的环境,为了用 GIT,我装了 Git Bash 这个工具,但是在命令窗口中输入 svn 时提示 bash svn: command not found。 是不是我的 GIT 工具装得不对?还是我要专门安装 SVN ?
    saximi
        16
    saximi  
    OP
       2017-09-23 23:53:06 +08:00
    @oglop 我在 WINDOWS 上装了 TortoiseSVN,但是在 Git bash 中执行 svn export 命令还是提示 bash svn:command not found,是不是要先做什么设置?
    saximi
        17
    saximi  
    OP
       2017-09-24 00:11:28 +08:00
    @iahu 您给的这个网址上好像说只要安装两个工具就直接可以从 GITHUB 按目录下载,而不需要 SVN,这两个工具是 GitZip 和 DownGit,但是这两个工具都要翻墙下载的,找了国内的几个 CHROME 下载网址都找不到呢?
    iahu
        18
    iahu  
       2017-09-25 16:07:29 +08:00
    @saximi 安装了 TortoiseSVN,如果不能在 git bash 里使用 svn 命令,可能是你没有设置 svn 的环境变量。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2813 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:57 · PVG 10:57 · LAX 18:57 · JFK 21:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.