什么是'遥控器/ remotename / HEAD'在我克隆的Git回购?

时间:2015-02-09 00:19:31

标签: git git-push git-pull git-clone git-remote

我正在尝试设置一个本地Git存储库,它使用来自另一个存储库的特定分支作为起始模板(可能会对模板进行更改,但从不 - 或者至少几乎从不 - 推送到模板)和我我对两种方法之间的差异感到困惑:

如果我

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

但如果有另一种方法(上述两种方法除外)配置符合我目标的本地回购,我想听听它。

1 个答案:

答案 0 :(得分:0)

它是遥控器默认分支的标记。例如,在GitHub中,它是您在打开项目时看到的分支,您可以在设置对话框中更改它。

我认为只有当你拉动所有分支(以及它存在时)才能得到它。在第二个例子中,你只需要一个分支。

-m遥控器时,可以使用git remote add指定远程云端,您可以使用git remote set-head进行修改。

顺便说一句:如果您在没有设置遥控器的情况下从URL中提取,那么您不必担心会使其无法推送。

BTW2:使用最新的git,当您执行克隆到本地版本的克隆时,也可以使用--reference repository --dissociate。这样就无需下载所有文件(但仍然可以复制它们,因此如果要删除源代码,则无需担心。)