V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xiaowangge
V2EX  ›  问与答

Git 如何只获取某个仓库下指定目录中的所有文件?

  •  
  •   xiaowangge · 2016-07-08 13:48:02 +08:00 · 20012 次点击
    这是一个创建于 3060 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设,只想获取 unit 这个目录下的所有文件:

    bootstrap 下的 tests/unit

    mkdir myrepo
    cd myrepo
    git init
    git remote add -f origin https://github.com/twbs/bootstrap //这一步会报错, fatal: remote origin already exists
    git config core.sparseCheckout true
    echo "twbs/bootstrap/tree/master/js/tests/*" >> .git/info/sparse-checkout
    
    git pull origin master
    

    clone-a-git-repositorys-sub-directory-only

    6 条回复    2016-07-10 13:01:59 +08:00
    GreatMartial
        1
    GreatMartial  
       2016-07-08 13:52:12 +08:00 via Android
    不懂,帮顶
    xiaowangge
        2
    xiaowangge  
    OP
       2016-07-08 13:57:06 +08:00
    只获取一个文件的话,可以用

    git clone -n git://github.com/twbs/bootstrap.git --depth 1
    cd bootstrap
    git checkout HEAD README.md

    问题是,想获取某个指定目录下的所有文件,暂时没找到好的解决办法。
    SpicyCat
        3
    SpicyCat  
       2016-07-08 14:22:21 +08:00
    报错的那一步,你把 remote 的名字换下呗,不用 origin, 起个别的名字
    robinlovemaggie
        4
    robinlovemaggie  
       2016-07-08 14:48:42 +08:00
    @xiaowangge 亲啊,这个是老话题了,答案只有一个: git 不允许。可以看看 stackoverflow 上的解释 http://stackoverflow.com/questions/7106012/download-a-single-folder-or-directory-from-a-github-repo
    这个估计是 git 和 subversion 的最大区别了。
    xiaowangge
        5
    xiaowangge  
    OP
       2016-07-08 18:58:23 +08:00
    @robinlovemaggie git 1.7 version 之后, sparse checkout 此技术可以的,只是我没有执行成功==

    http://stackoverflow.com/questions/600079/is-there-any-way-to-clone-a-git-repositorys-sub-directory-only/13738951
    robinlovemaggie
        6
    robinlovemaggie  
       2016-07-10 13:01:59 +08:00   ❤️ 1
    @xiaowangge 哈哈,研究了一下 ,确实可以,我的步骤是;
    1. git init bootstrap && cd bootstrap
    2. git config core.sparsecheckout true
    3. echo '/js/tests/*' >> .git/info/sparse-checkout
    4. git remote add origin [email protected]:twbs/bootstrap.git
    5. git pull origin master

    感觉这个功能是为了死磕 svn 吧?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2698 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 03:55 · PVG 11:55 · LAX 19:55 · JFK 22:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.