参数细节
- --force:覆盖远程引用以与本地引用匹配。可能会导致远程仓库丢失提交,因此请谨慎使用。
- --verbose:以详细模式运行。
第29.1节:将特定对象推送到远程分支
通用语法
git push <remotename> <object>:<remotebranchname>
示例
git push origin master:wip-yourname
这会将你的 master 分支推送到 origin 的 wip-yourname 分支(通常是你克隆的仓库)。
删除远程分支
删除远程分支相当于将一个空对象推送到该分支:
git push <remotename> :<remotebranchname>
示例
git push origin :wip-yourname
这会删除 origin 的 wip-yourname 分支。
你也可以使用 --delete 标志,这在某些情况下更易读:
git push origin --delete wip-yourname
推送单个提交
如果你只想推送分支中的单个提交,可以使用以下命令:
git push <remotename> <commit SHA>:<remotebranchname>
示例
假设你的 Git 历史如下:
eeb32bc Commit 1 - 已推送
347d700 Commit 2 - 想要推送
e539af8 Commit 3 - 仅本地
5d339db Commit 4 - 仅本地
要仅推送 347d700 到远程 master,使用以下命令:
git push origin 347d700:master
第29.2节:推送
git push
这会将你的代码推送到现有的上游。根据推送配置,它会推送当前分支的代码(Git 2.x 的默认行为)或所有分支的代码(Git 1.x 的默认行为)。
指定远程仓库
在使用 Git 时,拥有多个远程仓库很有用。要指定要推送的远程仓库,只需在命令后附加其名称:
git push origin
指定分支
要推送特定分支,例如 feature_x:
git push origin feature_x
设置远程跟踪分支
如果你正在工作的分支最初不是来自远程仓库,仅使用 git push 第一次可能无法正常工作。你需要执行以下命令来告诉 Git 将当前分支推送到特定的远程/分支组合:
git push --set-upstream origin master
这里,master 是远程 origin 上的分支名称。你也可以使用 -u 作为 --set-upstream 的简写。
推送到新仓库
要推送到尚未创建或为空的仓库:
-
在 GitHub 上创建仓库(如果适用)。
-
复制给定的 URL,格式如下:
https://github.com/USERNAME/REPO_NAME.git -
在本地仓库中,执行以下命令:
bash git remote add origin URL通过运行以下命令验证是否已添加:
bash git remote -v -
运行以下命令:
bash git push origin master你的代码现在应该已经推送到 GitHub 了。
解释:推送代码意味着 Git 会分析你的本地提交与远程之间的差异,并将这些差异发送到上游以写入。推送成功后,你的本地仓库和远程仓库将同步,其他用户可以看到你的提交。
有关“上游”和“下游”概念的更多详细信息,请查看“备注”。
第29.3节:强制推送
有时,当你的本地更改与远程更改不兼容(例如,无法快速向前推进远程分支,或者远程分支不是你本地分支的直接祖先)时,唯一可以推送更改的方式是强制推送:
git push -f
或者
git push --force
重要说明:这会覆盖任何远程更改,使远程与本地匹配。
注意:使用此命令可能会导致远程仓库丢失提交。此外,如果你与其他人在共享这个远程仓库,强烈建议不要进行强制推送,因为他们的历史会保留每个被覆盖的提交,从而使他们的工作与远程仓库脱节。
一般规则:只在以下情况下进行强制推送:
- 除了你之外,没有人拉取你试图覆盖的更改。
- 你可以强制所有人克隆一个全新的副本,并让他们将更改应用到这个新副本上(人们可能会因此讨厌你)。
第29.4节:推送标签
git push --tags
推送本地仓库中尚未存在于远程仓库的所有 Git 标签。
第29.5节:更改默认推送行为
-
current:更新与当前工作分支同名的远程仓库分支。bash git config push.default current -
simple:简单地推送上游分支,但如果上游分支的名称不同,则无法工作。bash git config push.default simple -
upstream:无论远程分支的名称如何,都推送上游分支。bash git config push.default upstream -
matching:推送本地和远程 Git 中匹配的所有分支。bash git config push.default matching
设置首选风格后,使用以下命令更新远程仓库:
git push