Lab0实验报告
一、思考题
Thinking 0.1

执行命令 git status > Untracked.txt
后结果:

执行命令 git status > Stage.txt
后结果:

再执行命令 git status > Modified.txt

结果与和第一次执行 add 命令之前的 status 不一样。原因是第一次add之前文件并没有进入暂存区和版本库,状态为未跟踪(Untracked),但执行cat Modified.txt
时文件README.txt已经加入版本库中,此时对README.txt进行修改,其与版本库中内容不一致,状态显示为修改(modified)。
Thinking 0.2


Add the file 和 Stage the file 对应 git add 指令
Commit 对应 git commit 指令
Thinking 0.3

- 执行
git checkout -- print.c
指令。 - 执行
git reset HEAD print.c
指令,再执行git checkout -- print.c
命令。 - 执行
git rm --cached hello.txt
命令。
Thinking 0.4


提交三次后提交日志

版本回退后提交日志
执行命令git reset --hard cc3f90dd4759b0316fb0c9741a28c9b5756ec904
后提交日志

执行命令git reset --hard 59add749262989777dcc81ebc235ba94610370d3
后提交日志

结论:git reset指令可以通过移动HEAD回退到历史任意版本并更新暂存区以及版本库的版本,添加 –hard 参数后会将工作目录中的文件覆盖,如果工作目录中的文件未提交的情况下使用 git reset –hard 指令则会导致当前未暂存的内容无法找回。
Thinking 0.5

结果如下

Thinking 0.6




result 中内容
回答:有区别。
在命令行指令中有被引号包裹的命令时,会优先执行该指令并将被包裹的内容替换为输出。
二、难点分析
- git的理解与使用
- 命令行指令的理解与使用。如awk,sed等工具
- 对Makefile以及其对子目录下Makefile引用的理解。
三、实验体会
通过本次实验,我初步学会使用vim,git等工具,但实际灵活使用还需要进一步练习。以上种种工具的掌握对于简易OS的编写起到奠基作用。