关于 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
。
处理“非快进”错误
如果你的本地仓库副本与你正在推送到的上游仓库不同步或“落后”,你将收到一条消息,提示 非快进更新被拒绝
。这意味着你必须在能够推送本地更改之前检索或“获取”上游更改。
有关此错误的更多信息,请参阅“处理非快进错误”。
推送标签
默认情况下,如果没有其他参数,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
会删除远程仓库上的分支。
远程仓库和fork
你可能已经知道,你可以在 GitHub 上“fork”仓库。
克隆你拥有的仓库时,你提供一个远程 URL,告诉 Git 在哪里获取和推送更新。如果要与原始仓库协作,则需要向你的本地 Git 克隆添加一个新的远程 URL,通常称为 upstream
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 并发起拉取请求。
有关使用 fork 的更多信息,请参阅“同步 fork”。