推送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 上云
$ 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 被拒的现场
$ 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
.gitignore 挡住 .env
本地文件夹
📄 index.html
📄 style.css
📄 .gitignore
📄 .env 🔑
📄 style.css
📄 .gitignore
📄 .env 🔑
GitHub 仓库
📄 index.html
📄 style.css
📄 .gitignore
没有 .env ✓
📄 style.css
📄 .gitignore
没有 .env ✓