git push -u origin 分支名可新建远程分支并建立跟踪关系,后续git push/pull无需参数;head可安全替代分支名推送;本地与远程分支名可不同;推错分支名需先推正确名再删除错误名。

git push -u origin 分支名 是最直接的方式
新建本地分支后,它只存在于你自己的仓库里,远程仓库根本不知道它的存在。想让别人看到、协作或 CI 触发,必须显式推送过去。git push -u origin feature/login 这条命令一次性完成两件事:把本地分支内容推到远程同名分支,并建立跟踪关系(upstream)。之后再在该分支上 git push 或 git pull 就不用带参数了。
-
-u(即--set-upstream)不是可选修饰,而是建立后续简写操作的前提;不加它,下次git push会报错fatal: The current branch ... has no upstream branch - 远程仓库必须已存在且你有写权限;如果远程仓库地址还没配,得先
git remote add origin https://... - 分支名里含斜杠(如
feature/login)完全合法,Git 和 GitHub/GitLab 都支持,但部分老旧 CI 工具可能解析异常,建议团队提前对齐命名规则
没切到新分支就直接推送?用 HEAD 更安全
有时你刚 git checkout -b feature/x,改了几行代码,突然想起要立刻推到远程——但又不确定当前分支名有没有拼错。这时候别手动输分支名,用 HEAD 代替:
git push -u origin HEAD:feature/x
这表示“把当前提交(无论在哪个分支)推到远程的 feature/x”。尤其适合以下场景:
- 你在
main上做了临时修改,不想污染主分支,又懒得新建分支再切过去 - 你用脚本自动化创建分支,避免字符串拼接出错
- 你刚初始化一个空项目(
git init后还没任何分支),也能靠HEAD直接推送到远程新分支
远程分支名和本地分支名可以不同
Git 并不要求两者必须一致。比如你本地叫 dev-login,但想推成远程的 feature/login,直接这样写就行:
监控一个或多个 GitCode 仓库的 PR,通过 OpenClaw Gateway 自动执行 AI 审查,发布 PR 评论,并发送钉钉和企业微信通知。
git push -u origin dev-login:feature/login
这种写法在以下情况很实用:
- 团队规范要求远程分支统一用
feature/xxx前缀,但你本地习惯简写为login - 你要把某个修复补丁单独拎出来,推到一个语义明确的远程分支,而不影响本地开发流
- 远程已有同名分支但你不小心删了本地跟踪,用
local-name:remote-name可以重新绑定,无需先删再推
推送后发现远程分支名错了怎么办
推错名字不可怕,Git 没有“重命名远程分支”这个原子操作,但可以用两步修正:
- 先把正确内容推上去:
git push -u origin feature/correct-name - 再删掉错的:
git push origin :feature/wrong-name(注意冒号前有空格)
关键点是:删除操作不会影响本地分支,也不会动远程其他分支;但所有协作者必须手动更新他们的本地跟踪配置——他们原来的 git pull 会失败,得先 git branch --unset-upstream,再 git branch --set-upstream-to=origin/feature/correct-name。这点容易被忽略,同步成本比预想中高。










