2

我创建了一个 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 --all 我没有看到那个特定的条目:

* 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

所以现在我更加困惑:)

4

2 回答 2

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

于 2015-02-25T16:18:29.713 回答
0

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

  1. 在您的 P4 服务器中定义允许 git-p4 确定目录结构中可能的重新分区的分支规范。
  2. 用于git config --local git-p4.branchList path/to/branchA:path/to/branchB将分支定义放在您的 git 存储库本地。

正确选择第二个选项有时很困难,但是按照您的示例,我认为您应该从添加以下配置开始:

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

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

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

于 2015-03-02T12:05:22.630 回答