git push 是 Git 中用于将本地仓库的提交推送到远程仓库的核心命令。以下是详细的使用说明和常见场景:


基本语法

git push [远程仓库名] [本地分支名]:[远程分支名]
  • 远程仓库名:通常是 origin(默认名称),但也可以是其他自定义名称。
  • 本地分支名:要推送的本地分支。
  • 远程分支名:远程仓库的目标分支(默认与本地分支同名)。

常用操作

1. 推送当前分支到默认远程仓库
git push
  • 如果当前分支已设置上游(upstream),直接推送。
  • 若未设置上游,需先指定远程分支(见下文)。
2. 推送指定分支到远程仓库
git push origin main         # 推送本地 main 分支到远程 main 分支
git push origin dev:new-dev  # 推送本地 dev 分支到远程 new-dev 分支
3. 首次推送并设置上游分支
git push -u origin main      # -u 或 --set-upstream
  • 将本地分支与远程分支关联,后续可直接用 git push
4. 强制推送(覆盖远程历史)
git push --force          # 强制覆盖远程分支(谨慎使用!)
git push --force-with-lease  # 更安全的强制推送(仅当远程未更新时生效)
  • 适用场景:本地分支变基(rebase)或修改提交历史后。
  • 风险:可能覆盖他人提交,确保团队协作中已沟通。
5. 删除远程分支
git push origin --delete dev  # 删除远程 dev 分支
6. 推送所有标签
git push origin --tags      # 推送所有本地标签到远程
7. 推送所有分支
git push --all origin       # 推送所有本地分支到远程

配置选项

  • 默认推送行为:通过 git config 设置 push.default 决定默认行为:
    git config --global push.default simple  # 推荐:仅推送当前分支
    
    • simple:推送当前分支到同名远程分支(需已关联)。
    • current:推送当前分支到同名远程分支(未关联时自动创建)。
    • upstream:推送到已关联的上游分支。
    • matching:推送所有与远程同名的本地分支(旧版本默认)。

常见问题处理

1. 推送被拒绝(非快进提交)
  • 原因:远程分支有本地未合并的提交。
  • 解决
    1. 先拉取远程更新:git pull --rebase(推荐变基合并)。
    2. 解决冲突后重新推送。
2. 查看远程仓库信息
git remote -v              # 查看远程仓库地址
git branch -vv             # 查看本地分支与远程分支的关联关系
3. 修改默认远程仓库名
git remote rename origin new-name  # 将远程仓库 origin 重命名为 new-name

最佳实践

  1. 推送前先拉取:确保本地与远程分支同步,避免冲突。
  2. 慎用 --force:尽量使用 --force-with-lease 减少风险。
  3. 及时清理分支:删除已合并的远程分支,保持仓库整洁。

遇到问题时,可通过 git push --help 查看完整文档。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐