init
This commit is contained in:
+497
@@ -0,0 +1,497 @@
|
||||
# Day_3:Git 入门——给代码一个“存档点”
|
||||
|
||||
> 今天学习 APP 开发中非常重要的工具:Git。
|
||||
>
|
||||
> 不管以后学习 React Native、Kotlin、KMP 还是后端,你都会继续使用它。
|
||||
|
||||
预计用时:40~60 分钟
|
||||
|
||||
## 今日目标
|
||||
|
||||
完成今天后,你应该能够:
|
||||
|
||||
- 理解 Git 大概是做什么的
|
||||
- clone 一个仓库
|
||||
- 查看 Git 状态
|
||||
- add 修改
|
||||
- commit 修改
|
||||
- push 到远程
|
||||
- pull 最新代码
|
||||
|
||||
暂时不用学习复杂 Git。
|
||||
|
||||
---
|
||||
|
||||
# 1. Git 是什么?
|
||||
|
||||
假设你写项目时这样保存:
|
||||
|
||||
```text
|
||||
最终版.zip
|
||||
最终版2.zip
|
||||
最终版真的最终版.zip
|
||||
最终版真的最终版修改.zip
|
||||
```
|
||||
|
||||
这显然很痛苦。
|
||||
|
||||
Git 可以帮你保存项目的修改历史。
|
||||
|
||||
你可以把:
|
||||
|
||||
```text
|
||||
commit
|
||||
```
|
||||
|
||||
理解成:
|
||||
|
||||
> 给当前代码拍一张快照。
|
||||
|
||||
---
|
||||
|
||||
# 2. Git 最基本的流程
|
||||
|
||||
暂时只需要记住:
|
||||
|
||||
```text
|
||||
修改文件
|
||||
↓
|
||||
git add
|
||||
↓
|
||||
git commit
|
||||
↓
|
||||
git push
|
||||
↓
|
||||
远程仓库
|
||||
```
|
||||
|
||||
其中:
|
||||
|
||||
```text
|
||||
add
|
||||
```
|
||||
|
||||
表示:
|
||||
|
||||
> 我准备提交这些修改。
|
||||
|
||||
```text
|
||||
commit
|
||||
```
|
||||
|
||||
表示:
|
||||
|
||||
> 保存一个版本。
|
||||
|
||||
```text
|
||||
push
|
||||
```
|
||||
|
||||
表示:
|
||||
|
||||
> 把本地版本上传到服务器。
|
||||
|
||||
---
|
||||
|
||||
# 3. 配置自己的身份
|
||||
|
||||
第一次使用 Git,需要告诉 Git 你是谁。
|
||||
|
||||
打开终端:
|
||||
|
||||
```bash
|
||||
git config --global user.name "你的名字"
|
||||
```
|
||||
|
||||
例如:
|
||||
|
||||
```bash
|
||||
git config --global user.name "Arthur"
|
||||
```
|
||||
|
||||
再填写邮箱:
|
||||
|
||||
```bash
|
||||
git config --global user.email "你的邮箱"
|
||||
```
|
||||
|
||||
查看:
|
||||
|
||||
```bash
|
||||
git config --global --list
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 4. 创建自己的练习仓库
|
||||
|
||||
进入社团 Git 平台。
|
||||
|
||||
创建一个自己的仓库,例如:
|
||||
|
||||
```text
|
||||
app-rookie-你的名字
|
||||
```
|
||||
|
||||
创建仓库时建议:
|
||||
|
||||
```text
|
||||
初始化 README
|
||||
```
|
||||
|
||||
这样仓库不是空的。
|
||||
|
||||
找到仓库的:
|
||||
|
||||
```text
|
||||
HTTPS Clone 地址
|
||||
```
|
||||
|
||||
复制。
|
||||
|
||||
---
|
||||
|
||||
# 5. clone 到自己的电脑
|
||||
|
||||
先进入你准备保存代码的位置:
|
||||
|
||||
```bash
|
||||
cd 你的目录
|
||||
```
|
||||
|
||||
然后:
|
||||
|
||||
```bash
|
||||
git clone 复制下来的地址
|
||||
```
|
||||
|
||||
例如:
|
||||
|
||||
```bash
|
||||
git clone <你的仓库地址>
|
||||
```
|
||||
|
||||
成功后:
|
||||
|
||||
```bash
|
||||
ls
|
||||
```
|
||||
|
||||
应该出现:
|
||||
|
||||
```text
|
||||
app-rookie-你的名字
|
||||
```
|
||||
|
||||
进入:
|
||||
|
||||
```bash
|
||||
cd app-rookie-你的名字
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 6. 看看 Git 在干什么
|
||||
|
||||
执行:
|
||||
|
||||
```bash
|
||||
git status
|
||||
```
|
||||
|
||||
如果没有修改,通常会看到类似:
|
||||
|
||||
```text
|
||||
nothing to commit
|
||||
working tree clean
|
||||
```
|
||||
|
||||
意思是:
|
||||
|
||||
> 当前代码没有没有保存的修改。
|
||||
|
||||
---
|
||||
|
||||
# 7. 修改一个文件
|
||||
|
||||
执行:
|
||||
|
||||
```bash
|
||||
echo "Day 3 Git Practice" > Day_3.txt
|
||||
```
|
||||
|
||||
再:
|
||||
|
||||
```bash
|
||||
git status
|
||||
```
|
||||
|
||||
这一次你应该看到:
|
||||
|
||||
```text
|
||||
Day_3.txt
|
||||
```
|
||||
|
||||
出现在未跟踪文件中。
|
||||
|
||||
---
|
||||
|
||||
# 8. git add
|
||||
|
||||
执行:
|
||||
|
||||
```bash
|
||||
git add Day_3.txt
|
||||
```
|
||||
|
||||
再次:
|
||||
|
||||
```bash
|
||||
git status
|
||||
```
|
||||
|
||||
文件状态发生了变化。
|
||||
|
||||
现在表示:
|
||||
|
||||
> 我准备把 Day_3.txt 放进下一次 commit。
|
||||
|
||||
---
|
||||
|
||||
# 9. 第一个 commit
|
||||
|
||||
执行:
|
||||
|
||||
```bash
|
||||
git commit -m "docs: finish day 3 git practice"
|
||||
```
|
||||
|
||||
这里:
|
||||
|
||||
```text
|
||||
-m
|
||||
```
|
||||
|
||||
后面的文字就是:
|
||||
|
||||
> 这次修改做了什么。
|
||||
|
||||
---
|
||||
|
||||
# 10. push
|
||||
|
||||
执行:
|
||||
|
||||
```bash
|
||||
git push
|
||||
```
|
||||
|
||||
根据平台设置,第一次可能需要登录。
|
||||
|
||||
完成后打开网页刷新仓库。
|
||||
|
||||
如果你看到:
|
||||
|
||||
```text
|
||||
Day_3.txt
|
||||
```
|
||||
|
||||
恭喜:
|
||||
|
||||
> 🎉 你完成了第一次真正的 Git 提交。
|
||||
|
||||
---
|
||||
|
||||
# 11. git log
|
||||
|
||||
执行:
|
||||
|
||||
```bash
|
||||
git log --oneline
|
||||
```
|
||||
|
||||
你可能看到:
|
||||
|
||||
```text
|
||||
abc1234 docs: finish day 3 git practice
|
||||
...
|
||||
```
|
||||
|
||||
这就是你的提交历史。
|
||||
|
||||
---
|
||||
|
||||
# 12. pull 是什么?
|
||||
|
||||
如果服务器上的代码比你的电脑更新:
|
||||
|
||||
需要:
|
||||
|
||||
```bash
|
||||
git pull
|
||||
```
|
||||
|
||||
你可以尝试:
|
||||
|
||||
1. 在 Git 网页上修改 `README.md`
|
||||
2. 直接在网页提交修改
|
||||
3. 回到本地
|
||||
4. 执行:
|
||||
|
||||
```bash
|
||||
git pull
|
||||
```
|
||||
|
||||
观察本地文件有没有更新。
|
||||
|
||||
---
|
||||
|
||||
# 今日任务
|
||||
|
||||
完成以下过程:
|
||||
|
||||
```text
|
||||
创建个人仓库
|
||||
↓
|
||||
clone
|
||||
↓
|
||||
创建 Day_3.txt
|
||||
↓
|
||||
git add
|
||||
↓
|
||||
git commit
|
||||
↓
|
||||
git push
|
||||
↓
|
||||
网页确认文件存在
|
||||
```
|
||||
|
||||
然后再做第二次修改:
|
||||
|
||||
把:
|
||||
|
||||
```text
|
||||
Day 3 Git Practice
|
||||
```
|
||||
|
||||
改成:
|
||||
|
||||
```text
|
||||
Day 3 Git Practice
|
||||
I know how to use Git now.
|
||||
```
|
||||
|
||||
再次:
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "docs: update day 3 practice"
|
||||
git push
|
||||
```
|
||||
|
||||
最后:
|
||||
|
||||
```bash
|
||||
git log --oneline
|
||||
```
|
||||
|
||||
应该至少看到两个自己的 commit。
|
||||
|
||||
---
|
||||
|
||||
# 验收标准
|
||||
|
||||
- [ ] 知道 Git 是版本管理工具
|
||||
- [ ] 成功 clone 仓库
|
||||
- [ ] 会执行 `git status`
|
||||
- [ ] 会执行 `git add`
|
||||
- [ ] 会执行 `git commit`
|
||||
- [ ] 会执行 `git push`
|
||||
- [ ] 知道 `git pull` 是做什么的
|
||||
- [ ] 仓库里至少存在两个自己的 commit
|
||||
|
||||
提交:
|
||||
|
||||
```text
|
||||
git log --oneline
|
||||
```
|
||||
|
||||
的截图。
|
||||
|
||||
---
|
||||
|
||||
# 常见问题
|
||||
|
||||
## `not a git repository`
|
||||
|
||||
先执行:
|
||||
|
||||
```bash
|
||||
pwd
|
||||
```
|
||||
|
||||
很可能:
|
||||
|
||||
> 你没有进入仓库目录。
|
||||
|
||||
执行:
|
||||
|
||||
```bash
|
||||
cd app-rookie-你的名字
|
||||
```
|
||||
|
||||
然后再试。
|
||||
|
||||
这就是为什么 Day_2 要学习目录。
|
||||
|
||||
---
|
||||
|
||||
## `nothing to commit`
|
||||
|
||||
通常表示:
|
||||
|
||||
> 你没有新的修改可以提交。
|
||||
|
||||
先:
|
||||
|
||||
```bash
|
||||
git status
|
||||
```
|
||||
|
||||
看看发生了什么。
|
||||
|
||||
---
|
||||
|
||||
## push 被拒绝
|
||||
|
||||
先不要乱执行:
|
||||
|
||||
```text
|
||||
--force
|
||||
```
|
||||
|
||||
先尝试:
|
||||
|
||||
```bash
|
||||
git pull
|
||||
```
|
||||
|
||||
如果仍然失败:
|
||||
|
||||
把完整报错提交到工单或询问学长学姐。
|
||||
|
||||
---
|
||||
|
||||
# Bonus
|
||||
|
||||
尝试执行:
|
||||
|
||||
```bash
|
||||
git diff
|
||||
```
|
||||
|
||||
然后修改一个文件,再执行一次。
|
||||
|
||||
看看 Git 是如何显示代码变化的。
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user