【问题标题】:What is 'remotes/remotename/HEAD' in my cloned Git repo?我克隆的 Git 存储库中的“remotes/remotename/HEAD”是什么?
【发布时间】:2015-04-08 16:13:35
【问题描述】:

我正在尝试设置一个本地 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

但如果有另一种方法(除了上述两种)来配置满足我目标的本地存储库,我想听听。

【问题讨论】:

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


    【解决方案1】:

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

    我认为只有在拉出所有分支时(并且当它存在时)才能得到它。在您的第二个示例中,您只拉出一个分支。

    git remote add远程时可以用-m指定远程头,也可以用git remote set-head修改。

    顺便说一句:如果您从 URL 中提取而没有设置远程,那么您不必担心使其无法推送。

    BTW2:使用最新的 git,您还可以在克隆指向本地版本时使用 --reference repository --dissociate。这避免了下载所有文件的需要(但仍会复制它们,因此您无需担心是否要删除源)。

    【讨论】:

    • 但在第一个示例中,我也(或认为我是)只拉了一个分支(使用--single-branch)。
    • 另外:我想让远程分支可以拉取,以便我可以(例如)查看模板的演变,并可能将其中的更改合并到我开始的本地项目中来自它。
    猜你喜欢
    • 2012-09-22
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    相关资源
    最近更新 更多