2015-02-09 116 views
0

我試圖設置一個本地Git倉庫,使用另一個倉庫中的特定分支作爲起始模板(可能會將更改提供給模板,但從不 - 或者至少幾乎不會 - 推送到模板)通過區別這兩種方法之間犯難:什麼是我的克隆Git回購中的'remotes/remotename/HEAD'?

如果我

git clone --origin framework --branch template <repo_url> <repo_directory> --single-branch 
cd <repo_directory> 
git remote set-url --push framework DISABLED 

我有一個remotes/framework/HEAD遠程分支,如果我不是

mkdir <repo_directory> 
cd <repo_directory> 
git init 
git remote add framework <repo_url> 
git pull framework template:template 

一切是同時(或至少看起來)是相同的,除了沒有remotes/framework/HEAD

什麼是remotes/framework/HEAD爲什麼它出現在一種方法而不是另一種?


我收集,以防止推到遠程回購在兩種情況下,唯一的辦法就是用類似

git remote set-url --push framework DISABLED 

但如果有另一種方法(除了上面兩個除外)配置本地回購符合我的目標,我想聽聽它。

回答

0

這是一個遙控器默認分支的標記。例如,在GitHub中,它是您在打開項目時看到的分支,您可以在設置對話框中更改它。

我想你只有當你拉動所有分支(以及它存在的時候)才能得到它。在你的第二個例子中,你只需要拉一個分支。

當您的git remote add爲遠程時,您可以使用-m指定遠程磁頭,您可以使用git remote set-head對其進行修改。

順便說一句:如果你從一個URL而不設置遙控器拉,那麼你不必擔心使它不能推動。

BTW2:使用最新的git,你也可以使用--reference repository --dissociate當你做一個克隆到本地版本。這樣可以避免需要下載所有文件(但是仍然可以複製它們,因此如果您想刪除源文件,則不必擔心)。

+0

但是在第一個例子中,我(或者以爲我是)也只拉動一個分支(用'--single-branch')。 – orome 2015-02-09 00:32:29

+0

另外:我想讓遠程分支可以被拉動,以便我可以(例如)查看模板的演變,並且可能將變化從其中引入到我開始的本地項目中。 – orome 2015-02-09 00:33:12