GitHub 新手指南
这份指南旨在帮助初学者从零开始掌握 Git 和 GitHub 的核心操作流程。
核心概念
- Git (本地工具):你的“时光机”和“打字机”。负责在本地记录代码的修改历史。
- GitHub (云端仓库):你的“图书馆”。负责在云端保存代码,方便分享和协作。
- Repository (仓库):你的“项目文件夹”。
- Remote (远程):通常指 GitHub 上的那个仓库(默认叫
origin)。
第一阶段:环境配置 (只需做一次)
在开始之前,必须告诉 Git 你是谁。
# 1. 设置用户名
git config --global user.name "你的GitHub用户名"
# 2. 设置邮箱
git config --global user.email "你的GitHub注册邮箱"
# 3. (推荐) 设置默认拉取行为为“合并”,避免报错
git config --global pull.rebase false
# 4. 检查配置是否成功
git config --list
第二阶段:开始一个项目
通常推荐 先在网页创建,再克隆到本地 的方式。
-
在 GitHub 网页上:点击右上角
+->New repository-> 勾选Add a README file-> 创建。 -
在本地终端上:
# 把云端仓库下载到本地 git clone https://github.com/你的用户名/仓库名.git # 进入项目文件夹 cd 仓库名
第三阶段:日常工作流 (核心三板斧)
这是你每天写代码时重复频率最高的动作。
开工前
永远先同步云端的最新代码,防止落后。
git pull
1. 监控状态
随时查看你修改了哪些文件。
git status
2. 暂存 (Add)
把文件放入“快递盒”。
git add . # 添加所有修改过的文件
# 或者
git add 文件名 # 只添加指定文件
3. 提交 (Commit)
封好快递盒,贴上备注单。
git commit -m "这里写清楚你改了什么"
4. 推送 (Push)
把快递发往云端。
git push
第四阶段:分支与协作 (进阶)
不要在主分支 (main) 上直接做实验,创建一个平行宇宙 (分支)。
1. 创建并切换分支
# 创建一个叫 feature-1 的新分支并切换过去
git checkout -b feature-1
2. 在新分支工作
在新分支里可以随意 add, commit,不会影响主分支。
3. 推送新分支
云端还没这个分支,第一次推送需要指定名字:
git push origin feature-1
4. 合并代码 (Pull Request)
- 打开 GitHub 网页。
- 看到黄色的提示框,点击 Compare & pull request。
- 点击 Merge pull request 确认合并。
5. 清理本地旧分支
合并完成后,本地的 feature-1 就可以删除了。
# 先切回主分支
git checkout main
# 把云端的最新结果拉下来
git pull
# 删除旧分支
git branch -d feature-1
第五阶段:解决冲突 (Conflict)
当 git pull 或 git push 提示 CONFLICT 时,不要慌。
- 打开文件:找到冲突标记。
<<<<<<< HEAD 你的代码 ======= 云端的代码 >>>>>>> (hash) - 手动修改:删除
<<<<,====,>>>>这些行,保留你想要的代码。 - 提交修复:
git add . git commit -m "修复冲突" git push
附录:同步命令辨析
| 命令 | 作用 | 场景 |
|---|---|---|
git pull | 下载 + 合并 | 最常用,更新当前分支代码 |
git fetch | 只下载信息 | 更新分支列表,但不修改文件 (当你 git branch 找不到同事的新分支时用) |
git fetch -p | 清理列表 | 刷新并移除云端已删除的分支记录 |
常用命令
| 动作 | 命令 |
|---|---|
| 下载项目 | git clone [url] |
| 查看状态 | git status |
| 保存进度 | git add . + git commit -m "msg" |
| 上传云端 | git push |
| 拉取更新 | git pull |
| 切换分支 | git checkout [分支名] |
| 新建分支 | git checkout -b [新分支名] |
| 删除分支 | git branch -d [分支名] |
此时此刻,你已经是合格的 GitHub 使用者了!祝你的代码之路 0 errors, 0 warnings! 🎉

