# lab-0 实验总结
# 思考题
# Thinking 0.1
- 使用
cat Modified.txt
,观察它和第一次add
之前的status
一样吗,思考一 下为什么?
两者显然不同,第一次 add
之前并没有 Stage.txt
和 Modified.txt
,因此在 Untracked files 中没有它们
第一次 add
之前, README.txt
在工作区,但不在版本库中,因此显示 Untracked;第二次 README.txt
在版本库中已经有一个版本,但是工作区做了修改,因此显示 modified
# Thinking 0.2
- 仔细看看这张图,思考一下箭头中的 add the file、stage the file 和 commit 分别对应的是 Git 里的哪些命令呢?
add the file 对应 git add
stage the file 对应 git add
commit git commit
# Thinking 0.3
- 深夜,小明在做操作系统实验。困意一阵阵袭来,小明睡倒在了键盘上。等到小明早上醒来的时候,他惊恐地发现,他把一个重要的代码文件 printf.c 删除掉了。苦恼的小明向你求助,你该怎样帮他把代码文件恢复呢?
git checkout -- printf.c |
- 正在小明苦恼的时候,小红主动请缨帮小明解决问题。小红很爽快地在键盘上敲下了 git rm printf.c,这下事情更复杂了,现在你又该如何处理才能弥补小红的过错呢?
git checkout -- printf.c |
- 处理完代码文件,你正打算去找小明说他的文件已经恢复了,但突然发现小明的仓库里有一个叫 Tucao.txt,你好奇地打开一看,发现是吐槽操作系统实验的,且该文件已经被添加到暂存区了,面对这样的情况,你该如何设置才能使 Tucao.txt 在不从工作区删除的情况下不会被 git commit 指令提交到版本库?
git rm --cached Tucao.txt |
# Thinking 0.4
完成前三步后,执行 git log
得到
如果 reset 到第一次提交,则 2、3 两次提交记录会消失
这时候可以通过记录提交哈希值的方式 “回到未来”
git 可以快速在版本之间切换,这一点在 OO 课程中已经发挥出其优势
# Thinking 0.5
思考下面四个描述,你觉得哪些正确,哪些错误,请给出你参考的资料或实验证据。
- 克隆时所有分支均被克隆,但只有 HEAD 指向的分支被检出。
正确,使用 git branch -a
命令查看,可以看到所有分支,但是本地文件夹会显示只能显示一个 branch
的信息,这个就是当前 HEAD
所指向的 branch
- 克隆出的工作区中执行 git log、git status、git checkout、git commit 等操作不会去访问远程版本库。
正确,只有 git push
才会操作远程版本库
- 克隆时只有远程版本库 HEAD 指向的分支被克隆。
错误,如上图所示,全部被克隆下来
- 克隆后工作区的默认分支处于 master 分支。
错误,应该是 HEAD 指向的分支
# Thinking 0.6
执行结果如上,可以看出区别在于输出到文件还是屏幕,是覆盖文件内容还是追加文件内容
# Thinking 0.7
运行结果如下图
echo Shell Start
和 echo 'Shell Start'
在效果上无区别
echo \$c>file1
表示将变量 c 输出到 file1 中
echo '\$c>file1'
直接将 ''
中的内容输出到屏幕上,即,使用单引号,不转义
# 实验难点
graph LR | |
命令行的使用,了解Linux基本命令-->熟悉gcc编译命令-->写Makefile-->编写bash脚本 |
# 体会与感想
我觉得 lab-0 实验是基础,是为以后更好地进行操作系统实验做铺垫,因此要尽快熟悉 Linux 命令行的使用,在这次实验中,我虽然完成了所有作业试,但是自我感觉对一些命令的掌握还不够深刻,我觉得自己还要付出很大的努力去学好这门课程。m