跳转到内容

推送到远程仓库

当你在此本地完成了提交 (commit) 并希望与他人分享或备份代码时,你需要将这些更改推送 (push) 到远程仓库。

推送操作显式地将你的本地提交上传到远程仓库。

常用语法: git push <remote> <branch>

Terminal window
git push origin main

这条命令的意思是:“把我的本地 main 分支的最新更改,推送到 origin 这个远程仓库的 main 分支上去。”

如果你在新建的仓库中第一次推送,或者推送一个新创建的本地分支,你可能会看到这样的错误:

Terminal window
fatal: The current branch main has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin main

这是因为 Git 不知道你当前的本地分支应该对应远程的哪个分支。你需要使用 -u (或 --set-upstream) 参数来建立这种跟踪关系

Terminal window
# 第一次推送并建立跟踪关系
git push -u origin main

一旦建立了这种关系(即设置了 Upstream),以后你只需要输入简短的 git push,Git 就知道要把当前分支推送到哪里。

有时,你的推送会失败,并提示 [rejected]

Terminal window
! [rejected] main -> main (fetch first)
error: failed to push some refs to '...'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally.

原因:远程仓库包含了一些你本地没有的提交。这通常是因为你的同事(或你在另一台电脑上)已经向远程分支推送了新代码。

解决方法: 根据拒绝原因采取不同措施:

  1. 远程有新提交(最常见):先获取远程更新,再整合:

    Terminal window
    git fetch origin
    # 选择合并或变基:
    git merge origin/main # 合并方式
    # 或
    git rebase origin/main # 变基方式(保持线性历史)

    解决冲突(如有)后,再次 git push

  2. 权限不足或分支保护:检查你是否有该分支的写入权限,或该分支是否启用了保护规则(如要求 PR 审核)。

  • git push <remote> <branch> 将本地提交上传。
  • 使用 -u 参数设置上游分支,简化后续命令。
  • 如果推送被拒绝,先用 git fetch 检查远程状态,再决定 merge 还是 rebase;如果是权限问题,检查仓库设置。