2015-11-04 43 views
0

介紹如何檢出一個遠程分支到一個目錄?

我有一個遠程分支的本地存儲庫稱爲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分支。我不想查看遠程分支,我只想讓它能夠克隆它。如何獲取分支而不是結帳?

之後,我想從我的gh-pages克隆推入我的本地存儲庫。當我從本地存儲庫推送到遠程源時,應推送分支,mastergh-pages分支。

這樣做有沒有可能對fetchpush的工作方式產生誤解?

+0

'git worktree add'可能是一個更好的解決方案 –

回答

0

我也使用相同的存儲庫來託管源代碼(在主)和文檔(在gh頁)。

我的消息來源代碼文件夾樹是一樣的東西:

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

documentation文件夾中生成的文檔在哪裏。 我已將它添加到.gitignore,因此它不會出現在master分支中。

該源代碼庫指向origin,檢出master

現在documentation文件夾是另一個指向origin的git存儲庫,但它已檢出gh-pages分支。

工作流程摘要是code in mastergenerate doccommit and push mastercommit and push gh-pages

相關問題