git-p4 sync拉取的p4分支显示为远程分支,如何转为可正常操作的本地分支?
git-p4“远程分支”含义说明
这里remotes/p4/前缀对应的“远程”是Git内置的命名空间标记,并非指代分支存储在远端服务器:
- 这类分支本质是只读的Perforce上游跟踪分支,Git默认标记它们不可直接修改,目的是避免你手动改动后和P4服务器的提交记录产生冲突,后续拉取P4更新时无法自动合并
- 所有
remotes/p4/前缀的分支完全存储在你的本地设备中,不需要联网就能查看、基于它们创建新分支
转换为普通可操作本地分支的步骤
- 第一步:确认目标P4跟踪分支的完整名称,执行命令:
git branch -r
输出列表中找到你需要转换的分支,例如remotes/p4/dev - 第二步:基于跟踪分支创建可编辑的本地分支,执行命令:
git checkout -b <自定义本地分支名> remotes/p4/<P4分支名>
示例:要把P4的dev分支转成本地可操作的p4-dev分支,就执行:git checkout -b p4-dev remotes/p4/dev
执行完成后会自动进入新创建的p4-dev分支,不会再出现detached HEAD状态,可正常执行本地提交、合并等操作 - 第三步(可选,需要同步P4上游内容时配置):给本地分支绑定对应的P4跟踪上游,执行命令:
git branch --set-upstream-to=remotes/p4/<P4分支名> <本地分支名>
配置完成后,后续拉取对应P4分支的更新直接执行git p4 sync即可,本地提交要推回P4服务器时,在当前分支执行git p4 submit就会提交到对应的P4分支上。
注意:git-p4的上下游同步不要使用普通Git的
git pull/git push命令,统一使用git p4 sync和git p4 submit操作,避免破坏分支和P4服务器的对应关系。
内容的提问来源于stack exchange,提问作者Steve Summit
相关产品推荐
相关产品推荐

