我创建了一个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
所以现在我更加困惑:)
答案 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检测分支:
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下直接完成的。我建议你这样做。但要考虑到要正确检测分支,您需要使用P4存储库路径末尾的@all
表示法导入完整的历史记录。
另一种方法是使用没有分支检测的临时git存储库来初始化P4服务器,然后使用P4从初始分支集成/复制/分支到新分支。此时,您应该能够使用分支检测和我上面描述的配置将P4存储库正确导入新的git存储库。