为什么没有遥控器/原产地/ HEAD - >我推动回购的新分支的起源/主人

时间:2015-02-25 15:48:48

标签: git github git-p4

我创建了一个git分支并将其推送到origin master。现在当我git branch --all时,它没有显示remotes/origin/HEAD --> origin/master。我能够执行所有git操作。

  • 这是预期的吗?
  • 拥有/没有这个的逻辑是什么? 条目?
  

修改

看起来我实际上做了一些混乱。我从p4导入了一个repo 这是序列:

 1. git init 
 2. ../git/git-p4.py clone --detect-branches //projects/<my_project_path_in_p4>
 3. git checkout -q -b master refs/remotes/p4/<my_project_path>
 4. git add --all
 5. git commit -m "Initial Commit"
 6. git remote add origin <my_git_path>
 7. git push origin master

然后当我做git branch时 - 我看不到那个特定的条目:

* master
remotes/origin/master
remotes/p4/workflow_manager/workflow_manager-15.3.0
  

**第二次编辑:**

当我克隆同一个分支并执行git branch --all时,我得到remotes/origin/HEAD --> origin/master。这是预期克隆后的输出

* master
remotes/origin/HEAD -> origin/master
remotes/origin/master

所以现在我更加困惑:)

2 个答案:

答案 0 :(得分:2)

为什么remotes/origin/HEAD丢失?

您可以通过git remote set-head -d origin将其从您的计算机中删除。听起来你没有这样做。

如何取回?

在任何情况下,您都可以通过运行git remote set-head -a来取回它。这要求遥控器确定其HEAD,然后适当地更新您的本地。

是否需要缺少远程HEAD

不,这不是预期的。

为什么我们会remotes/origin/HEAD

remotes\origin\HEAD表示遥控器上的默认分支。逻辑是,无论何时使用origin,您都可以使用origin/master作为速记。例如。它使git log origin/master等同于git log origin

另见

https://www.kernel.org/pub/software/scm/git/docs/git-remote.html

答案 1 :(得分:0)

有两种方法可以使git-p4检测分支:

  1. 在P4服务器中定义了分支规范,允许git-p4确定目录结构中可能的重新分区。
  2. 使用git config --local git-p4.branchList path/to/branchA:path/to/branchB将分支定义放在git存储库的本地。
  3. 获得第二个选项有时很困难,但按照您的示例,我认为您应该首先添加以下配置:

    git config --local git-p4.branchList workflow_manager/workflow_manager-15.3.0:workflow_manager/workflow_manager-15.3.0
    

    请注意,根据我的个人经验,我总是从导入已包含分支的P4存储库开始。也就是说,所有初始化工作都是在P4下直接完成的。我建议你这样做。但要考虑到要正确检测分支,您需要使用P4存储库路径末尾的@all表示法导入完整的历史记录。

    另一种方法是使用没有分支检测的临时git存储库来初始化P4服务器,然后使用P4从初始分支集成/复制/分支到新分支。此时,您应该能够使用分支检测和我上面描述的配置将P4存储库正确导入新的git存储库。