Menu
CoddyTech

Git Push

最后更新

git push 把本地分支上的提交上传到对应的远程分支(例如 GitHub 上的分支)。分支设置好上游之后,直接运行 git push 就够了;新分支第一次推送时要加 -u,它会创建远程分支并建立跟踪关系,以后的 push 和 pull 都不用再写参数。

在终端在线编辑器中试试这些命令:浏览器里就是真正的 shell,无需安装。

git push 把你新的本地提交上传到远程分支。

语法

命令作用
git push把当前分支推送到它的上游
git push -u origin feature推送新分支并设置上游
git push origin main推送到指定的远程仓库和分支
git push --tags推送所有本地标签
git push --force-with-lease变基后安全地强制推送

常见用法

目标命令
推送一个全新的分支git push -u origin feature
已设置上游后推送git push
推送单个标签git push origin v1.0.0
删除远程分支git push origin --delete feature

完整示例

步骤命令结果
1git remote add origin <url>以 origin 为名把本地仓库连接到远程仓库
2git push -u origin main在远程创建 main,并把它设为本地 main 的上游
3git push之后在 main 上推送都不需要参数

git push 常见问题

git push 是做什么的?

它把本地分支有而远程分支没有的提交发送过去,然后把远程分支移动到相同的位置。它只上传提交:未提交的改动仍然留在你的电脑上,所以要先 commit。如果远程有你本地没有的提交,推送会被拒绝,需要先 pull 或变基。

怎么把新分支推送到远程仓库?
运行 git push -u origin <branch>。-u(--set-upstream 的简写)会在远程创建这个分支,并把你的本地分支和它关联起来,之后直接 git push 和 git pull 就不用写参数了。在第一次推送之前,远程分支是不存在的。
为什么 git push 提示“no upstream branch”?
你的本地分支还没有关联任何远程分支。用 git push -u origin <branch> 推送,就会创建远程分支并设置上游。之后单独运行 git push,Git 就知道该把提交发到哪里。
怎么推送标签?
标签默认不会被推送。用 git push origin <tagname> 推送单个标签,或用 git push --tags 一次推送全部标签。这是一个常见的坑:在本地创建的标签,只有显式推送后才会出现在远程仓库。
怎么安全地强制推送?
改写历史之后(例如变基或 amend),用 git push --force-with-lease 代替 --force。只有在你上次 fetch 之后没有其他人推送过,它才会覆盖远程分支,从而保护队友的工作。完整说明请看 git 强制推送页面。
git push -u origin main 是什么意思?
origin 是远程仓库(见 git remote),main 是分支,-u 把这个远程分支设为本地 main 的上游。这正是 GitHub 在新仓库页面上给出的命令:运行一次之后,在 main 上执行 git push 和 git pull 都不需要参数。
git push 和 git pull 有什么区别?
它们移动提交的方向相反。git push 把你的本地提交上传到远程仓库;git pull 下载远程的新提交并合并到你的分支。如果推送因为 non-fast-forward 被拒绝,通常说明你需要先 pull。pull 在底层做了什么,请看 git fetch 与 pull 对比。
可以在线练习吗?
可以。打开终端在线编辑器,就能在浏览器里的真实 shell 中运行 git push,无需安装。Coddy 的免费互动 Git 课程也会一步步教你使用远程仓库。
Coddy 编程语言插图

在 Coddy 学习 Git

开始