Chenerdy的幻想乡
首页文章归档风说书笔记说说友链项目相册关于
← 返回风说书

把这一篇交到网上:Git 上传白话步骤

2026-10-22 01:00:00

这篇稿子现在只躺在你自己的电脑里。下面每一步,都是在把它交到 GitHub 上的仓库。做完之后,打开仓库就能看见它;如果网站连着自动发布,过一两分钟,风说书栏目里也会出现这一篇。

仓库地址:chenerdy987/chenerdy-blog。日常用的分支叫 main。

先分清三件事

很多人把「保存」和「上传」当成一件事。其实是三层:

  1. 保存。在 Cursor 里按 Ctrl + S。文件写进你电脑上的 D:\technology\myblog。网上还没有。
  2. 记账,命令是 git commit。给这次改动写一句说明,记在你电脑上的 Git 账本里。网上还是没有。
  3. 推送,命令是 git push。把这笔账交到 GitHub。这一步才是上传。

中间还有一个容易漏掉的动作:git add。它的意思是「勾选这次要交哪些文件」。不勾选,就不能记账。

可以把它想成寄包裹:

  • 改完文章 = 东西已经在桌上
  • git add = 放进这次要寄的箱子
  • git commit = 在箱子上写一张说明条
  • git push = 真正寄出

打开终端,先站对文件夹

在 Cursor 里打开终端(菜单 Terminal → New Terminal,或按 Ctrl + `)。你这台电脑用的是 PowerShell。

先确认自己站在博客文件夹里。输入下面这一行,回车:

POWERSHELL 实例
Get-Location

路径里应能看到 D:\technology\myblog。如果不是,先走进去:

POWERSHELL 实例
cd D:\technology\myblog

后面的命令都在这个文件夹里敲。

第一步:看看手头有什么

POWERSHELL 实例
git status

这行只是查看,不会改任何东西。

屏幕上大概会分成几堆:

  • Changes not staged 或红色文件名:改过,但还没放进这次的箱子。
  • Untracked files:Git 以前没见过的新文件,同样还没进箱子。
  • Changes to be committed:已经放进箱子、等着记账的。

你现在会看到不少别的稿子、图片、编辑器自己改的文件。那些先留在电脑上。这次箱子里只放一篇:

chatters/git-shangchuan.md

这就是你正在读的这篇。

第二步:只把这一篇放进箱子

POWERSHELL 实例
git add chatters/git-shangchuan.md

add 仍然不是上传。它只是勾选。文件还在你电脑上,GitHub 上还看不见。

敲完没有热闹的成功提示,是正常的。用下一步确认。

第三步:核对箱子里是不是只有这一篇

再跑一次:

POWERSHELL 实例
git status

在 Changes to be committed 下面,应当能看到:

实例
new file:   chatters/git-shangchuan.md

它会变成绿色。别的未完成稿子如果还停在 Untracked 或红色区域,就对了,说明它们没被装进这次的箱子。

如果手快,把别的文件也 add 进去了,把它从箱子里拿出来,文件本身还在:

POWERSHELL 实例
git restore --staged 那个文件的路径

例如不小心装进了课表计划,就写:

POWERSHELL 实例
git restore --staged chatters/blog_plan.md

然后重新 git status,直到绿色区域只剩这一篇。

第四步:写一句说明,记进本地账本

POWERSHELL 实例
git commit -m "新增风说书:Git 上传白话攻略"

-m 后面引号里的字,是给未来的自己看的说明:这次交了什么。一句话就够,说清原因。

成功时,终端会列出类似这样的几行:

实例
[main xxxxxxx] 新增风说书:Git 上传白话攻略 1 file changed, ...

到这里,账已经记在你电脑上了。关掉网页再打开 GitHub,仍然看不到这篇。还差推送。

第五步:推到 GitHub

POWERSHELL 实例
git push

你的 main 已经跟着远程的 origin/main,所以不用每次都写全 git push origin main。写全也一样能用:

POWERSHELL 实例
git push origin main

推送时电脑要能上网。第一次可能会弹出 GitHub 登录窗口,用浏览器登录你的 GitHub 账号就行。GitHub 早就不接受「账号密码直接填进终端」这种办法;弹出的是官方登录,按它的提示点下去。

成功时,最后几行里会有 main -> main,以及一串新的提交编号。

第六步:验收

本地再看一眼:

POWERSHELL 实例
git status

chatters/git-shangchuan.md 不应再出现在未跟踪列表里。别的还没交的稿子继续留在列表里,这是预期结果。

然后打开这个地址,确认文件已经在网上:

https://github.com/chenerdy987/chenerdy-blog/blob/main/chatters/git-shangchuan.md

本机想先看页面,在博客文件夹里运行:

POWERSHELL 实例
npm run dev

浏览器打开 http://localhost:3000/chatter/git-shangchuan。风说书列表在 http://localhost:3000/chatter。

线上站点如果接了 Vercel,推到 main 之后它会自己重新构建。等一两分钟,再打开网站上的风说书。构建要是失败,到 Vercel 或 GitHub 的页面上看红色报错,那是下一步的事,这篇先以「GitHub 上能看见文件」为准。

以后发新文章,还是这四行

换掉文件名和那句说明即可。假设新稿是 chatters/xin-de-yipian.md:

POWERSHELL 实例
cd D:\technology\mybloggit statusgit add chatters/xin-de-yipian.mdgit statusgit commit -m "新增风说书:这里写这篇讲什么"git push

第二次 git status 是给自己看的核对,值得留着。一次要交好几篇,就多写几行 git add,每行一个文件,然后再 commit、再 push。一次 push 可以把已经 commit 过、还没推上去的账一并送出。

文章放进 posts 文件夹,会进「文章」栏目;放进 chatters,会进「风说书」。文件名会变成网址里的那一段,所以这篇的地址是 /chatter/git-shangchuan。

这几条命令各自干什么

命令 白话
git status 看看哪些改了、哪些已进箱子、哪些已记账还没推送
git add 文件 把这个文件放进这次要交的箱子
git commit -m "说明" 在本地账本记一笔,附上一句说明
git push 把本地还没交出去的账,推到 GitHub
git pull 把 GitHub 上比你新的账,先拉回你的电脑

git log --oneline -5 可以看最近五笔账,用来确认刚才那句说明写进去了。

卡住时对照这里

推送时要登录。 跟着弹出的 GitHub 窗口用浏览器登录。窗口没弹出来、终端一直等,看一下任务栏有没有被挡住的登录框。

终端写着 rejected,并提到 fetch first 或 non-fast-forward。 意思是:你推之前,GitHub 上已经有别人(或另一台电脑)先交过新账,你这份对不上。先把网上的拿下来,再推:

POWERSHELL 实例
git pullgit push

git pull 若停住让你写合并说明,那是它打开了一个编辑器。第一行留着它写好的字即可,保存并关掉那个窗口,命令就会继续。

commit 时提示 nothing to commit。 箱子是空的。回到第二步,先 git add 那一篇,再 commit。

改完又存了一次,想把新改动也交上去。 再走一遍 add、核对、commit、push。每一笔都是新账,叠在上一笔后面。

说明写错了,人还没 push。 先不要用那些「改写历史」的命令。再 commit 一笔补一句就行;已经 push 过的更不用改旧账。

密码、密钥。 .env、.env.local 这类文件已经被忽略,不会跟着走。页面上需要的密钥放到 Vercel 的环境变量里,不写进要提交的稿子。

编辑器配置。 .idea 里经常有软件自己改的记录,这次不用放进箱子。

用 Cursor 左侧按钮做同一件事

不想敲命令时,可以用源代码管理面板,顺序一样:

  1. 点左侧源代码管理图标(分支形状)。
  2. 在变更列表里找到 chatters/git-shangchuan.md,只勾这一篇,或点它旁边的 +。这一下等于 git add。
  3. 上面的输入框写:新增风说书:Git 上传白话攻略。
  4. 点「提交」。等于 git commit。
  5. 点「同步」或「推送」。等于 git push。

提交前看一眼列表:进了「暂存的更改」的,才是这次要交的。其余留在「更改」里。

面板和终端改的是同一本账。用面板提交之后,再在终端跑 git status,结果是一致的。

留言