Lab0 思考题

Thinking 0.1

  • cat Untracked.txtcat Stage.txt的两次运行结果的不同:前者是未跟踪Untracked files,后者是要提交(暂存)Changes to be commited

  • README.txt位置的不同:Untracked.txt处在未跟踪状态,add之后处于暂存状态

    image-20240311145424935
  • cat Modified.txt:结果与第一次执行add命令之前的status不一样。原因:README.txt现在是已经跟踪的状态,所以不会变成第一次add前的未跟踪状态;但是该文件经过了修改,也没有经过暂存和提交,现在正处于被修改状态,也就是 “尚未暂存以备提交的变更”

    image-20240311145913170

Thinking 0.2

  • add the filegit add <filename>
  • stage the filegit add <filename>
  • commitgit commit <filename> -m <message>

Thinking 0.3

1 代码文件 print.c 被错误删除时,应当使用什么命令将其恢复?

删除了工作区的print.c文件,但是版本库里的还在;

git checkout --print.c 可以用版本库里的版本替换工作区里的版本,实现删除的恢复。

2 代码文件 print.c 被错误删除后,执行了 git rm print.c 命令,此时应当使用什么命令将其恢复?

删除了工作区的文件,然后用git rm print.c将删除放入了暂存区,但是还没有git commit,也就是说版本库中的文件没有删除,因此仍然可以用git checkout --print.c来恢复

3 无关文件 hello.txt 已经被添加到暂存区时,如何在不删除此文件的前提下将其移出暂存区

git rm --cached hello.txtgit reset HEAD --hello.txt都可以在不删除文件的前提下将文件移出暂存区

Thinking 0.4

  • git log 结果:提交说明为3的哈希值为commit8230cd2cd5da14dcbd1490effe626c393c8b0610

    image-20240311192747421
  • 版本回退后变成下图,变化:提交3消失了

    image-20240311192804355
  • 执行git reset --hard 40566667ae9ba9d28bfe69bcdc983be6313a8711后,回到版本1

    image-20240311193252152
  • 回到最新版本

    image-20240311193445985

Thinking 0.5

在标准输出输出了first、output.txt中为两行,第一行是third第二行是forth

(因为>是覆盖,而>>是追加,third把second给覆盖掉了)

Thinking 0.6

  • command文件:创建test文件,把echo ' ' >> test 中间的部分输出到test文件内部。当涉及到参数传递 $ or 重定向 > 时,用单引号''把要打印的内容括起来,避免歧义。

    image-20240311230435453
  • test文件内部:echo后面是打印到result的语句,test实现了a=1,b=2并计算了c=a+b的结果,将cba分别存储在file123后合并至file4,再将file4内容追加到result文件结尾

    image-20240311224600442
  • result文件内部:前10行是test打印的内容,后3行是从file4复制的内容

    image-20240311224831829
  • echo echo Shell Start和echo ‘echo Shell Start’(这里想打反引号但是typora会换成代码行了QAQ),效果有区别,前者输出echo Shell Start,后者输出Shell Start。原因:反引号相当于echo $(echo Shell Start),会将括号内部的echo Shell Start的输出Shell Start,替换至原处,导致语句等同于echo Shell Start。

  • 有区别,前者在test文件里输出echo,后者在test文件中输出为空

难点

1.Bash Shell 语法

对bash shell语法使用不熟练,例如变量的使用在该用{}时没有加,等等,导致程序错误

2.不熟悉实验系统和常用报错

导致出现错误定位很慢,甚至没有办法定位到错误。

3.对指导书里面涉及的内容没有充分理解和准备

chmod在课下没有看懂但是也没有去查资料找,导致课上仍然不会使用chmod

实验体会

这次实验做的非常不好,结束之后很难过,也很迷茫,进行了深刻的反思

最后还是觉得是因为准备不够充分,没有提前看学长博客等等,把可能会考到的都准备好,可能会用到的都练习熟练,导致这次上机炸掉了

体会的话,就是之后得多花时间做充分准备了,不要存侥幸心理觉得自己已经会了