EP05. “推上 GitHub:远端仓库、push、pull、fetch 与 README”
🔒 登录后可标记已读- 到这一步为止,所有 commit 都只在你自己的电脑里;push 之后,GitHub 上才有一份,换电脑、电脑坏了都不怕
- 本地已有项目、GitHub 还没有仓库:在 GitHub 建一个空仓库,再用
git remote add连起来 pull=fetch(下载)+merge(合并),想先看看别人改了什么再决定要不要合并,就只用fetch- 仓库首页显示的说明文字来自
README.md,是别人认识你项目的第一眼
重点内容
本地、远端、GitHub 的关系
flowchart LR
subgraph L["你的电脑(本地仓库)"]
L1["main 分支"]
end
subgraph G["GitHub(远端 origin)"]
G1["origin/main"]
end
L -->|git push| G
G -->|git fetch 只下载| L
G -->|git pull 下载并合并| L
情况一:本地已有项目,推上新建的 GitHub 仓库
在 GitHub 建空仓库:
- GitHub 右上角 + → New repository
- 填 Repository name,选 Public(公开)或 Private(私人)
- ⚠️ 本地已经有 commit 的话,不要勾 Add a README / .gitignore / license,保持空仓库,避免第一次 push 跟本地历史冲突
- 按 Create repository,复制页面上的仓库网址
在本地连上并推送:
git remote add origin https://github.com/aidentan/my-website.git
git branch -M main
git push -u origin main
| 指令 | 作用 |
|---|---|
git remote add origin 网址 | 把这个网址登记为远端,取名 origin |
git branch -M main | 确保本地主分支叫 main |
git push -u origin main | 推送,-u 记住对应关系,之后只要打 git push |
git remote -v | 查看目前连着哪个远端 |
情况二:GitHub 已有仓库,下载下来
git clone https://github.com/aidentan/my-website.git
clone 下来的仓库已经自动设好 origin,可以直接 git pull、git push。
日常同步:push、pull、fetch
| 指令 | 方向 | 做什么 |
|---|---|---|
git push | 本地 → GitHub | 把本地新的 commit 推上去 |
git pull | GitHub → 本地 | 下载远端新 commit 并合并进当前分支 |
git fetch | GitHub → 本地 | 只下载,不合并,本地文件不变 |
git push -u origin new-header | 本地 → GitHub | 第一次推送一条新分支 |
📌 好习惯:开工前先 git pull,收工前 git push。尤其两台电脑(公司、家里)轮流用同一个仓库时,少做一步就会冲突。
fetch 之后看差异再决定:
git fetch
git log --oneline main..origin/main # 远端有、本地还没有的 commit
git merge origin/main # 看过没问题再合并
push 被拒绝:rejected / non-fast-forward
! [rejected] main -> main (fetch first)
error: failed to push some refs
意思是 GitHub 上有你本地还没有的 commit(例如在网页上直接改过 README,或同事先推了)。解决:
git pull # 先把远端的新 commit 合并进来(有冲突就照 EP04 解决)
git push # 再推
⚠️ 看到这个错误不要用 git push --force 硬推,会把远端别人的 commit 直接覆盖掉。
README.md:项目的门面
- 放在仓库根目录,GitHub 会自动在仓库首页显示
- 用 Markdown 写,通常包含:项目是什么、怎么安装/使用、截图、联络方式
- 在个人账号建一个跟用户名同名的仓库(例如
aidentan/aidentan),里面的 README 会显示在你的 GitHub 个人主页上方
# 我的作品集网站
用 HTML + CSS 做的个人作品集。
## 怎么在本地打开
1. `git clone` 这个仓库
2. 用浏览器打开 `index.html`
Public 还是 Private?
| Public | Private | |
|---|---|---|
| 谁看得到 | 所有人 | 只有你和你邀请的协作者 |
| 适合 | 作品集、开源项目、GitHub Pages 免费架站 | 客户项目、含商业逻辑的代码 |
| 免费版 GitHub Pages | ✅ 可以 | ❌ 要付费方案 |
💡 之后随时可以在仓库 Settings → General 最下面的 Danger Zone 改公开/私人。
学完你会
- ✅ 把本地项目推上新建的 GitHub 仓库
- ✅ 分得清 push、pull、fetch
- ✅ 处理 push 被拒绝的情况
- ✅ 写一份基本的 README.md
常见错误
- ❌ 本地有 commit,却在 GitHub 建仓库时勾了 Add a README:第一次 push 会被拒绝,要先
git pull --allow-unrelated-histories合并两边历史,麻烦很多。 - ❌ push 被拒绝就
--force:会覆盖掉远端别人的 commit。 - ❌ 两台电脑轮流用,开工前没 pull:两边各改各的,合并时一堆冲突。
- ❌ 以为 commit 了就上传了:commit 只存在本地,要 push 才会到 GitHub。
- ❌ 客户项目放 Public 仓库:代码和里面的设定所有人都看得到。
Sources
官方文档: