跳至主要内容

将提交推送到远程存储库

使用 git push 将本地分支上进行的提交推送到远程存储库。

关于 git push

git push 命令采用两个参数

  • 远程名称,例如 origin
  • 分支名称,例如 main

例如

git push REMOTE-NAME BRANCH-NAME

例如,你通常会运行 git push origin main 将本地更改推送到在线存储库。

重命名分支

要重命名分支,你将使用相同的 git push 命令,但需要添加另一个参数:新分支的名称。例如

git push REMOTE-NAME LOCAL-BRANCH-NAME:REMOTE-BRANCH-NAME

这会将 LOCAL-BRANCH-NAME 推送到 REMOTE-NAME,但将其重命名为 REMOTE-BRANCH-NAME

处理“非快速转发”错误

如果存储库的本地副本与你正在推送到的上游存储库不同步或“落后”,你将收到一条消息,提示 non-fast-forward updates were rejected。这意味着在推送本地更改之前,你必须检索或“获取”上游更改。

有关此错误的更多信息,请参阅“处理非快速转发错误”。

推送标签

默认情况下,git push 在没有任何其他参数的情况下,会发送所有与远程分支同名的匹配分支。

要推送单个标签,你可以发出与推送分支相同的命令

git push REMOTE-NAME TAG-NAME

要推送所有标签,你可以输入以下命令

git push REMOTE-NAME --tags

删除远程分支或标签

删除分支的语法乍一看有点深奥

git push REMOTE-NAME :BRANCH-NAME

请注意冒号前有一个空格。该命令类似于重命名分支时要执行的步骤。但是,在这里,你告诉 Git 将无内容推送到 REMOTE-NAME 上的 BRANCH-NAME。因此,git push 会删除远程仓库中的分支。

远程和分支

你可能已经知道,可以在 GitHub 上“分支”仓库

当你克隆你自己的仓库时,你为其提供一个远程 URL,告诉 Git 从哪里获取和推送更新。如果你想与原始仓库协作,你需要向你的本地 Git 克隆添加一个新的远程 URL,通常称为 upstream

git remote add upstream THEIR_REMOTE_URL

现在,你可以从他们的分支获取更新和分支

git fetch upstream
# Grab the upstream remote's branches
> remote: Counting objects: 75, done.
> remote: Compressing objects: 100% (53/53), done.
> remote: Total 62 (delta 27), reused 44 (delta 9)
> Unpacking objects: 100% (62/62), done.
> From https://github.com/OCTOCAT/REPO
>  * [new branch]      main     -> upstream/main

当你完成本地更改后,你可以将你的本地分支推送到 GitHub 并发起一个拉取请求

有关使用分支的更多信息,请参阅“同步分支”。

延伸阅读