切换·Esc 返回

推送Push

Git 专区
把电脑里保存好的代码版本上传到网上的代码仓库

push 会把当前分支尚未同步的 commit 发送到 GitHub 等远程仓库,用于协作、备份或触发部署。被拒绝时先读取原因并处理远程变化,不要直接强制推送。

工作区不涉及 暂存区不涉及 本地仓库 git push 远程仓库
$ git push
commit 只存本地,push 才算上云:本地的新存档复制到 GitHub,电脑坏了也丢不了。推完刷新 GitHub 确认新存档出现在列表里才踏实。

什么时候用

  • 提交 Commit 后记得 push 才算上云:云端一份,电脑坏了也丢不了
    💻 本地仓库git push →☁️ GitHub
  • push 被拒先读原因、获取远程变化:处理完冲突并测试,再重新推送
    $ git push! [rejected] main -> main (non-fast-forward)hint: 'git pull' before pushing again.
  • 推送前检查提交范围,并确认本地密钥没有被记录
    .gitignore
    node_modules
    .env
    匹配规则的未跟踪文件会被跳过;已跟踪文件要另行处理
  • push 完刷新 GitHub 看一眼:最新存档出现在列表里才踏实
    刷新 GitHub,最新存档出现了✓ 上去了
    push 完看一眼,别想当然

什么时候不用

  • 只 commit 不 push以为已经备份:存档全在本地,电脑一坏全丢
    💻 本地 ●●●●☁️ 空的
    只 commit 不 push,电脑坏了照样全丢
  • 被拒就 git push --force 强推:覆盖的是队友推上去的成果
    $ git push --force+ a3f9c21...e7b2d48 main -> main (forced update)队友推上去的存档被你覆盖了
  • 把真实密钥推到远程;删除文件也不能消除泄露风险
    .env已在 GitHub 上公开可见
    密钥一旦推送到远程仓库,即使删除提交也要按泄露处理
  • 没有检查就运行 git add .,可能把依赖和产物一起记录
    node_modules 380MBgit push →
    几百 MB 垃圾进仓库,该进 .gitignore
组成结构 · Anatomy
git pushoriginmain
1推送命令git push把本地仓库里的存档同步到远程,commit 之后才算真正备份
2远程别名origin远程仓库的代号,clone 下来的项目默认就叫 origin
3推哪条分支Branch把哪条世界线的存档推上去,通常是 main
常见变体 · Variants
常规推送git push
git push
本地存档同步到 GitHub
首次推送push -u
git push -u origin main
第一次推,记住对应关系
强制推送push --force
git push --force
会覆盖云端存档,新手别碰
典型使用场景
终端 git push 上云
zsh — my-first-page
$ git push Enumerating objects: 8, done. Counting objects: 100% (8/8), done. Writing objects: 100% (8/8), 1.24 KiB | 1.24 MiB/s, done. To github.com:oil-oil/my-first-page.git a3f9c21..e7b2d48 main -> main
push 被拒的现场
zsh — my-first-page
$ git push To github.com:oil-oil/my-first-page.git ! [rejected] main -> main (non-fast-forward) error: failed to push some refs hint: Updates were rejected because the remote contains hint: work that you do not have locally. hint: 'git pull' before pushing again. 别人先推了 → 先 git pull 合回来,再 push
GitHub 上确认新 commit
my-first-page 刚刚刷新
📄 index.html修复按钮在手机上错位1 分钟前
📄 style.css修复按钮在手机上错位1 分钟前
📄 .gitignore初始化项目3 天前
✓ 刚 push 的存档已经躺在云端了
.gitignore 挡住 .env
本地文件夹
📄 index.html
📄 style.css
📄 .gitignore
📄 .env 🔑
GitHub 仓库
📄 index.html
📄 style.css
📄 .gitignore
没有 .env ✓