如何将单个远程分支签出到目录中?

时间:2015-11-04 10:43:04

标签: git github-pages

简介

我有一个名为gh-pages的远程分支的本地存储库:

$ git branch -v -a
* master                  edfa5f3 Adds README for JSDoc.
  remotes/origin/HEAD     -> origin/master
  remotes/origin/gh-pages f7ab217 Switch to JSDoc 3.4.0-dev (Sun, 14 Jun 2015 18:49:07 GMT)
  remotes/origin/master   edfa5f3 Adds README for JSDoc.

我可以将远程源的单个分支签出到一个目录中:

$ git clone `git ls-remote --get-url` --branch gh-pages --single-branch gh-pages

之后我在gh-pages目录中有gh-pages分支。这很好用。我需要同时使用两个分支的原因是我的源代码文档。源代码文档的生成从当前签出的分支获取源代码,并将HTML生成到gh-pages分支。

缺点是,我必须将两个分支独立地推送到远程原点。

问题

现在我尝试使用我的本地存储库获得相同的设置。但是当我尝试从本地存储库中克隆gh-pages分支时,它失败了:

$ git clone . --branch gh-pages --single-branch gh-pages
Cloning into 'gh-pages'...
warning: Could not find remote branch gh-pages to clone.
fatal: Remote branch gh-pages not found in upstream origin
fatal: The remote end hung up unexpectedly

经过一些阅读后,我了解到我的本地存储库中缺少gh-pages分支。所以我尝试按照here的解释来获取它。但没有结账的抓取似乎什么都不做:

$ git fetch
$ git branch
* master

我仍然没有gh-pages分支。我不想检查远程分支,我只是想让它能够克隆它。如何获取克隆而不是checkout的分支?

之后我想从我的gh-pages克隆推送到我的本地存储库。当我从本地存储库推送到远程源时,两个分支都应该推送mastergh-pages分支。

这是可能做到的,还是我对fetchpush的实际工作方式有误解?

1 个答案:

答案 0 :(得分:0)

我也使用相同的存储库来托管源代码(在master上)和文档(在gh-pages上)。

我的源代码文件夹树类似于:

##
--src
--dist
--documentation
--.gitignore
--package.json
-- ...

documentation文件夹是生成文档的位置。 我已将其添加到.gitignore,因此它不会出现在master分支中。

此来源存储库指向origin已签出master

现在,documentation文件夹是另一个指向origin的git存储库,但已检出gh-pages分支。

工作流程摘要为code in master - > generate doc - > commit and push master - > commit and push gh-pages