Skip to main content

推送提交到远程仓库

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

关于

命令采用两个参数:

  • 远程名称(例如 )
  • 分支名称(例如 )

例如:

git push REMOTE-NAME BRANCH-NAME

例如,您通常运行命令将本地更改推送到在线存储库。

重命名分支

若要重命名分支,同样使用 命令,但要加上一个或多个参数:新分支的名称。 例如:

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

这会将 推送到 ,但它已重命名为 。

处理“非快进”错误

如果存储库的本地副本未同步或“落后于”你推送到的上游存储库,你会收到一条消息:。 这意味着必须检索或“提取”上游更改,然后才可推送本地更改。

有关此错误的详细信息,请查看 AUTOTITLE。

解决被阻止的提交

为了维护正在推送到的仓库的安全性,GitHub 的推送保护功能会自动保护你不要意外地将机密提交到 GitHub.com 上的公共仓库。 暴露的机密可能会对仓库和供应链构成严重的安全风险。 如果 GitHub 检测到尝试推送的提交包含受支持的机密,则会阻止推送。 若要解除该阻止,你应该选择以下其一:

  • 从您的提交中删除机密信息。 有关详细信息,请参阅解决推送被阻止的问题。
  • 按照提供的 URL 查看允许推送的选项。 有关更多信息,请参阅绕过推送保护功能。

要了解更多关于推送保护的信息,请参阅 AUTOTITLE。

推送标签

默认情况下,没有其他参数时, 会发送所有名称与远程分支相同的匹配分支。

要推送单个标签,可以使用与推送分支相同的命令:

git push REMOTE-NAME TAG-NAME

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

git push REMOTE-NAME --tags

删除远程分支或标记

删除分支的语法初看有点神秘:

git push REMOTE-NAME :BRANCH-NAME

请注意,冒号前有一个空格。 命令与重命名分支的步骤类似。 但在这里,你在告诉 Git 不要向 位于 的 中推送任何内容。 因此, 会删除远程存储库上的分支。

远程和复刻

你可能已经知道,你可以在GitHub上“派生”存储库

在克隆拥有的存储库时,向其提供远程 URL,指示 Git 到何处提取和推送更新。 如果要协作处理原始存储库,可将新的远程 URL(通常称为 )添加到本地 Git 克隆:

git remote add upstream THEIR_REMOTE_URL

现在,您可以从他们的fork中获取更新和分支:

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,初始化拉取请求

有关操作分叉的更多信息,请参阅 AUTOTITLE。

其他阅读材料

  • 《Pro Git》一书中的“远程”章节
  • 主页
  • 自动标题
  • 自动标题
  • Git 手册
  • AUTOTITLE