简介
我有一个名为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
克隆推送到我的本地存储库。当我从本地存储库推送到远程源时,两个分支都应该推送master
和gh-pages
分支。
这是可能做到的,还是我对fetch
和push
的实际工作方式有误解?
答案 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
。