Git 入门: 四状态转移理论与操作

mosdeo

2020/10/12 发布于 编程 分类

文字内容
1. Git 入门: 四状态转移理论与操作 林高远 最后修改日期 2018/12/26
2. 上完这门课,你将学到什麽? 认知 ● 识别某个文件,处于四状态中的哪一个? ● 解释常用 git command 的输出信息。 情意 ● 评断使用 SVN 或 Git 各自的优劣。 ○ 备注:本日课程连同另一份 Slide《针对 SVN 使用者的 Git 介绍》一起讲授。 技能 ● 操作新增/加入 Git repo 的方式。 ● 对于 git status 等高频指令输入,养成反射动作。 ● 使用 command line,控制任意文挡,在四状态间任意转移。 ● 使用 .gitignore 排除任意文挡在四状态之外。
3. 实践以前,你应该做好的课前准备 ● ● 安装好 Git 官方用户端 ○ https://git-scm.com/downloads ○ 安装教程 https://git-scm.com/book/zh/v2/起步-安装-Git 注册一个 Gitlab 或 Github 用户(非必要)
4. 大纲 概念 ● File 有四个 Status ● 实践 ● 前置作业 ○ 初次运行 Git 前的配置 ○ 用 git status 檢查空的 repository ○ 建立/取得一个 Git repository ● ● 四状态转移 ○ 建立一个 README.md ○ 加入 README.md 到 Git 追踪 ○ 更动 README.md 的内容 ○ 将 staged 部份 commit ○ 用 commit 对挡案时空还原-撤销修改 ○ 用 commit 对挡案时空还原-还原 delete ○ 用 commit 对挡案时空还原-讨论 解除追踪与忽略 ○ 真的从 Git tracked 中 remove the file ○ 将某些文件排除在 Git 四状态之外 .gitignore Q&A ○ git log 与 git status 有何不同?
5. File 有四个 Status 只讲图,大家一定会睡着,所以我们边做边讲。 目标是下课前,讲至少整个循环实作过一次。
6. 创建练习用目录 ● 命名为 StudyGit ● 建立方式 ● ○ 手动点 GUI ○ mkdir StudyGit 然后将当前位置 cd 到 StudyGit 底下
7. 初次运行 Git 前的配置 设置用户信息 ● ● $ git config --global user.name “你的名字” $ git config --global user.email “你的Email” 检查设置 ● $ git config -l 或 --list
8. 用 git status 檢查空的 repository $ git status
9. 建立/取得一个 Git repository 方法1:白手起家(当前以此为主) $ git init 方法2:从网上取得现成的 $ git clone 例如 https://github.com/github/gitignore.git
10. 现在才真正开始 走 status
11. 建立一个 README.md $ echo > README.md(或任何文字编辑器建立文挡都可以) ----$ git status 检查一下 当前在哪个状态?
12. 加入 README.md 到 Git 追踪 $ git add README.md ----$ git status 检查一下 当前在哪个状态? ----撤消追踪怎麽做?
13. 更动 README.md 的内容 使用任何你习惯的文字编辑器 加上"edit the file"这行内容或 echo “edit the file” >> README.md ----$ git status 检查一下,当前在哪个状态? --撤消修改怎麽做?
14. 将 staged 部份 commit $ git commit -m “To be commit part of staged” README.md
15. 恭喜你 有了第一个 commit 这个瞬间的代码将被 快照记住,不会轻易 丢失。 用 git log 看看 commit 历史
16. 还有剩下的路...
17. 用 commit 对挡案时空还原-撤销修改 1. 2. 3. 4. 5. 修改 README.md git status 检查 README.md 是否改变状态? 检查 README.md 是否已经确实修改?(cat README.md) git checkout README.md 看看 README.md 是否回来了?并再次用 git status 检查状态
18. 用 commit 对挡案时空还原-还原 delete 1. 2. 3. 4. 删除 README.md 检查 README.md 是否已经确实删除? git reset --hard <最后一个 SHA-1 checksum 头6码> 或 HEAD 看看 README.md 是否回来了? --还有什麽指令可以还原 README.md? 是前面练习过的。 --HEAD 又是什麽?
19. 用 commit 对挡案时空还原-讨论 git checkout V.S. git reset --hard 都能还原文档 有何不同?
20. 用 commit 对挡案时空还原:命令输出内容状态对照 ● ● ● 不是 remove the file 目前在哪里? 请用两个箭头,在 status 图上分别表达这 两行字的动作。
21. 真的从 Git tracked 中 remove the file $ git rm --cached --别忘了再用 git status 了解一下状况
22. 将某些文件排除在 Git 四状态之外 - .gitignore ● "." 开头是 unix 的隐藏檔 ● 不同编程语言或IDE,通常有其 .gitignore 惯例 ● 撰写方法暂时没空介绍 ● 怎麽办?Github 官方有提供惯例样板 https://github.com/github/gitignore ● 懒人用法: a. 下载或写好样板 b. git add .gitignore c. git commit -m “Add .gitignore” d. 生效
23. Q&A:git log 与 git status 有何不同? $ git log log 用于查阅 git commit 历史,并不关心 repository 当前状态,也就是与本课程不断强调 的四状态转移无关。 $ git status status 用于查阅 repository 当前状态、查阅有何 待处里工作?并不关心历史纪录。 简单的说,只关注当下。 能够在 git 系统中成为历史的,必定都成 为 commit 了;反之,没有被 commit 将不会被 git 记 住,也就不会存在于 log 中。 简单的说,只关注过去。