git 推送代码:git push
【代码】git 使用场景 本地分支 关联 远程分支。
·
目录
git push 的作用
git push 的作用是将本地分支的提交同步到远程仓库对应的分支上
git push 的内容
git push 默认会推送当前分支的最新提交 ➕ 它的历史记录 ➕ 所有依赖对象(tree、blob 等),前提是远程没有这些对象。 如果加上 --tags,还会推送所有 tag ➕及其指向的提交➕和依赖对象。
git push 前置条件
| 条件 | 说明 |
|---|---|
| 已配置远程仓库 | 使用 git remote add origin <url> 添加远程仓库 |
| 分支已Tracking远程分支 | 推荐使用 git push -u origin dev 设置上游分支;可通过 git branch -vv 查看当前跟踪关系 |
| 没有冲突 | 如果远程分支有你本地没有的提交,必须先拉取并解决冲突后才能推送 |
| 非落后提交 | 若远程已有新提交,而你尝试推送旧历史,Git 默认会拒绝(除非使用 --force 或 --force-with-lease) |
| 拥有推送权限 | 需要对目标远程仓库拥有写权限(SSH 密钥、Token、OAuth 等认证方式) |
| 符合远程仓库保护规则 | ・分支保护(Branch Protection) ・需要 Code Review / Approval ・CI/CD 通过要求 ・不允许强制推送(禁止 --force) |
常用命令
| 所在分支 | Git Push 命令 | 实际效果说明 | 创建远程分支 | 可用于首推 | 建立关联 |
|---|---|---|---|---|---|
release/main |
git push --set-upstream origin release:release1 |
将本地 release 推送为远程 release1,并设置上游 |
✅ 是 | ✅ 是 | ✅ 是 |
release/main |
git push -u origin release:release1 |
同上(-u 是 --set-upstream 缩写) |
✅ 是 | ✅ 是 | ✅ 是 |
release/main |
git push origin release:release1 |
推送本地 release 到远程为 release1,不设上游 |
✅ 是 | ✅ 是 | ❌ 否 |
release/main |
git push --set-upstream origin release |
推送本地 release 到远程同名分支 origin/release,并设置其为上游 |
✅ 是 | ✅ 是 | ✅ 是 |
release/main |
git push -u origin release |
同上(-u 是 --set-upstream 缩写) |
✅ 是 | ✅ 是 | ✅ 是 |
release/main |
git push origin release |
推送本地 release 到远程同名分支 origin/release,但不自动设置上游 |
✅ 是 | ✅ 是 | ❌ 否 |
release |
git push origin |
推送当前分支到远程 origin 同名分支(依赖 push.default 配置),不会自动设上游 |
✅ 是 | ✅ 是 | ❌ 否 |
release |
git push |
若当前分支已设置上游,则推送该分支; 否则报错或需手动指定 |
❌ 否 | ❌ 否 | ❌ 否 |
本地分支 与 远程分支 如何建立track关系
git branch --set-upstream-to=origin/release dev ✅ dev track origin/release
git branch --set-upstream-to=origin/release ✅ 当前分支 track origin/release
push 选项
–all
git push origin --all ✅ 将本地所有本地分支 推送到 远程仓库origin
等价于
git push origin dev feature-a bugfix-b main ...
–tags
git push origin --tags ✅ 推送所有本地标签(tag)
-f
git push -f origin release ✅ 强制推送本地 release 分支到远程
git push --force-with-lease release ✅ 更安全的强制推送方式,仅当远程分支未被其他人修改时才允许强制推送
–dry-run
git push --dry-run ✅模拟推送过程,不实际执行推送操作
RefSpec
git push origin :<branch> ✅ 删除远程分支
使用场景
git 本地分支 和 远程分支 恰巧重名时 如何push
更多推荐
所有评论(0)