9月15作业-git基础

题目中部分涉及未讲的知识点,以做题代学,自己可以查资料理解一下,明天会讲解

一、单选题

  1. 在Git中,执行 git status 后,若文件显示为 “Untracked files”,表示该文件处于什么状态?C
    A. 已修改但未暂存
    B. 已暂存但未提交
    C. 新文件,未被Git跟踪
    D. 已提交到本地仓库
    解释:
    Untracked files 表示文件是新建的,尚未被Git跟踪(未执行过 git add)。

  2. 执行 git add命令的主要作用是?C
    A. 将文件从本地仓库删除
    B. 将文件的修改提交到远程仓库
    C. 将文件的当前改动添加到暂存区(Stage/Index)
    D. 查看文件的具体修改内容
    解释:

  • A:已修改但未暂存 → 对应状态是 Changes not staged for commit
  • B:已暂存但未提交 → 对应状态是 Changes to be committed
  • D:已提交 → 文件会从状态列表中消失
  1. 以下哪个命令可以查看当前仓库的所有提交历史记录(包括提交哈希、作者、时间等基本信息)?A
    A. git log
    B. git diff
    C. git status
    D. git show
    解释:
  • git log 显示提交历史(哈希、作者、时间、说明)。
  • 错误选项:
    • B:git diff → 比较差异
    • C:git status → 查看当前状态
    • D:git show → 显示某次提交的详细内容
  1. 执行 git commit -m “提交说明” 时,若提示 “no changes added to commit”,最可能的原因是?B
    A. 忘记输入提交说明
    B. 未通过 git add 将修改添加到暂存区
    C. 当前目录不是Git仓库
    D. 提交说明包含非法字符
    解释:
  • 未通过 git add 将修改添加到暂存区,直接执行 git commit 会报此错误。
  • 错误选项:
    • A:提交说明问题 → 错误提示会是另一条消息
    • C:非Git仓库 → 提示是 not a git repository
    • D:非法字符 → 通常不会阻止提交
  1. 要撤销最近一次 git commit 操作(保留工作区和暂存区的修改),应使用哪个命令?A
    A. git reset –hard HEAD^
    B. git reset –soft HEAD^
    C. git revert HEAD
    D. git checkout – .
    解释:
  • 选项B(正确)
    git reset –soft HEAD^撤销提交但保留修改到暂存区。
    原答案A (–hard) 错误:会丢弃所有修改!
  • 其他选项:
    • C:git revert → 生成反向提交,不撤销原提交
    • D:git checkout – . → 仅撤销工作区修改
  1. 执行 git diff 命令默认比较的是?A
    A. 工作区与暂存区的差异
    B. 暂存区与最新提交的差异
    C. 工作区与最新提交的差异
    D. 两个不同分支的最新提交差异
    解释:
  • 错误选项:
    • B:暂存区与最新提交 → git diff –cached
    • C:工作区与最新提交 → git diff HEAD
    • D:分支差异 → git diff branch1 branch2
  1. 如何将暂存区(已 git add)的修改撤销(恢复到未暂存状态,但保留工作区的文件内容)?A
    A. git reset HEAD
    B. git checkout –
    C. git rm –cached
    D. git commit –amend
    解释:
  • git reset HEAD 将文件从暂存区撤回到工作区。
  • 错误选项:
    • B:git checkout – → 丢弃工作区修改
    • C:git rm –cached → 从Git中删除文件(保留本地文件)
    • D:git commit –amend → 修改最后一次提交
  1. 若想查看某个文件的历史修改记录(包括每次提交的改动内容),应使用哪个命令?A
    A. git log
    B. git blame
    C. git show
    D. git diff
    解释:
  • git log 显示文件的提交历史,但不含改动内容。
    更完整的命令是git log -p (显示差异)。
  • 其他选项:
    • B:git blame → 显示每行最后修改信息
    • C:git show → 显示某次提交的完整改动
    • D:git diff → 比较差异
  1. 执行 git clone <远程仓库URL> 后,默认情况下本地仓库会包含远程的哪个分支?A
    A. 所有远程分支
    B. 仅远程的 main/master 分支(默认克隆的分支)
    C. 无任何分支(需手动拉取)
    D. 所有远程分支的本地副本
    解释:
    默认仅克隆远程的默认分支(如 main/master),其他分支需手动 checkout。
    原答案A错误:不会自动创建所有远程分支的本地副本!

二、多选题

  1. 以下哪些命令可以查看Git仓库的状态或变更信息?(多选)ABC
    A. git status
    B. git log
    C. git diff
    D. git branch
    解释:
  • A:git status → 查看当前状态
  • B:git log → 查看提交历史(属于变更信息)
  • C:git diff → 查看具体差异
  • 错误选项:
    • D:git branch → 仅管理分支,不显示变更
  1. 关于 git add 和 git commit 的关系,正确的描述是?(多选)ABC
    A. 必须先 git add 将修改放入暂存区,才能 git commit
    B. git commit 只能提交暂存区中的内容,而非工作区的全部修改
    C. 一次 git commit 可以包含多个文件的修改(只要这些文件已 git add)
    D. git add 会将文件直接提交到远程仓库

  2. 执行 git commit 时,可以通过哪些方式添加提交说明?(多选)AB
    A. 命令行参数 -m “说明内容”
    B. 不加 -m 直接执行 git commit,随后在编辑器中输入说明
    C. 通过 git commit –amend 修改上一次的提交说明
    D. 在 .gitconfig 中预先设置默认说明
    解释:

  • C:–amend 是修改上一次提交,非本次
  • D:.gitconfig 不能设置默认提交说明
  1. 以下哪些操作可以撤销工作区的文件修改(恢复到最近一次 git add 或 git commit 的状态)?(多选)ABC
    A. git checkout –
    (撤销工作区修改,丢弃未暂存的改动)
    B. git restore
    (Git 2.23+ 推荐,功能同 checkout –)
    C. git reset –hard HEAD (撤销所有暂存区和工作区修改,谨慎使用)
    D. git revert
    (生成反向提交,不直接撤销工作区)
    解释:git revert 生成新提交,不影响工作区

  2. 执行 git log 时,可通过哪些参数控制输出内容?(多选)ABCD
    A. –oneline (简化输出,每条提交显示为一行:哈希+说明)
    B. –graph (以图形化方式显示分支合并历史,本题虽不涉及分支,但该参数本身有效)
    C. –author=”名字” (筛选指定作者的提交)
    D. –since=”2024-01-01” (筛选指定日期之后的提交)
    解释:所有参数均有效,包括简化输出、图形化、按作者/时间筛选。

  3. 以下哪些场景需要用到 git reset 命令?(多选)ABC
    A. 撤销最近一次提交,但保留工作区和暂存区的修改(软重置)
    B. 撤销提交并将修改退回到暂存区(混合重置,默认行为)
    C. 彻底丢弃最近一次提交及所有相关修改(硬重置)
    D. 修改最近一次提交的说明(需配合 –amend)
    解释:

  • A:–soft 保留修改到暂存区
  • B:默认混合重置(保留工作区)
  • C:–hard 彻底丢弃修改
  • 错误选项:
    • D:修改提交说明需用 git commit –amend
  1. 关于Git的提交对象(Commit),正确的描述是?(多选)AC
    A. 每个提交包含唯一的哈希值(40位SHA-1)
    B. 提交记录了当前项目的文件快照(非差异)
    C. 提交包含作者、提交时间及提交说明信息
    D. 提交可以直接修改(需通过特殊命令如 amend)
    解释:
  • B:提交记录文件快照 → 正确(原答案错误,应选B)
  • D:提交不可直接修改 → –amend 是生成新提交

二、 主观题

  1. git 是什么?可以做什么?
    Git 是一个分布式版本控制系统(DVCS)
    作用:撤销还原,多人协作,分支管理,远程仓库管理
  • 版本控制:记录文件历史,支持回退到任意版本。
  • 分支管理:轻量级分支,支持并行开发。
  • 协作开发:通过远程仓库(如 GitHub)实现多人协作。
  • 代码备份:每个开发者拥有完整的仓库副本。
  1. 分布式版本控制系统和集中式的区别?
    分布式:
    不需要联网,也可以工作。
    没有中央服务,每台自己就是服务器。
    没有全局分支,自己的服务器可以创建n个分支,速度极快(本地操作)。
    集中式:
    必须联网才能工作
    中央服务器出问题了,就没法工作
    分支速度慢
    | 对比维度 | Git(分布式) | SVN(集中式) |
    |