Git作业_0915
9月15作业-git基础
题目中部分涉及未讲的知识点,以做题代学,自己可以查资料理解一下,明天会讲解
一、单选题
在Git中,执行 git status 后,若文件显示为 “Untracked files”,表示该文件处于什么状态?C
A. 已修改但未暂存
B. 已暂存但未提交
C. 新文件,未被Git跟踪
D. 已提交到本地仓库
解释:
Untracked files 表示文件是新建的,尚未被Git跟踪(未执行过 git add)。执行 git add命令的主要作用是?C
A. 将文件从本地仓库删除
B. 将文件的修改提交到远程仓库
C. 将文件的当前改动添加到暂存区(Stage/Index)
D. 查看文件的具体修改内容
解释:
- A:已修改但未暂存 → 对应状态是 Changes not staged for commit
- B:已暂存但未提交 → 对应状态是 Changes to be committed
- D:已提交 → 文件会从状态列表中消失
- 以下哪个命令可以查看当前仓库的所有提交历史记录(包括提交哈希、作者、时间等基本信息)?A
A. git log
B. git diff
C. git status
D. git show
解释:
- git log 显示提交历史(哈希、作者、时间、说明)。
- 错误选项:
- B:git diff → 比较差异
- C:git status → 查看当前状态
- D:git show → 显示某次提交的详细内容
- 执行 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:非法字符 → 通常不会阻止提交
- 要撤销最近一次 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 – . → 仅撤销工作区修改
- 执行 git diff 命令默认比较的是?A
A. 工作区与暂存区的差异
B. 暂存区与最新提交的差异
C. 工作区与最新提交的差异
D. 两个不同分支的最新提交差异
解释:
- 错误选项:
- B:暂存区与最新提交 → git diff –cached
- C:工作区与最新提交 → git diff HEAD
- D:分支差异 → git diff branch1 branch2
- 如何将暂存区(已 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 → 修改最后一次提交
- B:git checkout –
- 若想查看某个文件的历史修改记录(包括每次提交的改动内容),应使用哪个命令?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 → 比较差异
- 执行 git clone <远程仓库URL> 后,默认情况下本地仓库会包含远程的哪个分支?A
A. 所有远程分支
B. 仅远程的 main/master 分支(默认克隆的分支)
C. 无任何分支(需手动拉取)
D. 所有远程分支的本地副本
解释:
默认仅克隆远程的默认分支(如 main/master),其他分支需手动 checkout。
原答案A错误:不会自动创建所有远程分支的本地副本!
二、多选题
- 以下哪些命令可以查看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 → 仅管理分支,不显示变更
关于 git add 和 git commit 的关系,正确的描述是?(多选)ABC
A. 必须先 git add 将修改放入暂存区,才能 git commit
B. git commit 只能提交暂存区中的内容,而非工作区的全部修改
C. 一次 git commit 可以包含多个文件的修改(只要这些文件已 git add)
D. git add 会将文件直接提交到远程仓库执行 git commit 时,可以通过哪些方式添加提交说明?(多选)AB
A. 命令行参数 -m “说明内容”
B. 不加 -m 直接执行 git commit,随后在编辑器中输入说明
C. 通过 git commit –amend 修改上一次的提交说明
D. 在 .gitconfig 中预先设置默认说明
解释:
- C:–amend 是修改上一次提交,非本次
- D:.gitconfig 不能设置默认提交说明
以下哪些操作可以撤销工作区的文件修改(恢复到最近一次 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 生成新提交,不影响工作区执行 git log 时,可通过哪些参数控制输出内容?(多选)ABCD
A. –oneline (简化输出,每条提交显示为一行:哈希+说明)
B. –graph (以图形化方式显示分支合并历史,本题虽不涉及分支,但该参数本身有效)
C. –author=”名字” (筛选指定作者的提交)
D. –since=”2024-01-01” (筛选指定日期之后的提交)
解释:所有参数均有效,包括简化输出、图形化、按作者/时间筛选。以下哪些场景需要用到 git reset 命令?(多选)ABC
A. 撤销最近一次提交,但保留工作区和暂存区的修改(软重置)
B. 撤销提交并将修改退回到暂存区(混合重置,默认行为)
C. 彻底丢弃最近一次提交及所有相关修改(硬重置)
D. 修改最近一次提交的说明(需配合 –amend)
解释:
- A:–soft 保留修改到暂存区
- B:默认混合重置(保留工作区)
- C:–hard 彻底丢弃修改
- 错误选项:
- D:修改提交说明需用 git commit –amend
- 关于Git的提交对象(Commit),正确的描述是?(多选)AC
A. 每个提交包含唯一的哈希值(40位SHA-1)
B. 提交记录了当前项目的文件快照(非差异)
C. 提交包含作者、提交时间及提交说明信息
D. 提交可以直接修改(需通过特殊命令如 amend)
解释:
- B:提交记录文件快照 → 正确(原答案错误,应选B)
- D:提交不可直接修改 → –amend 是生成新提交
二、 主观题
- git 是什么?可以做什么?
Git 是一个分布式版本控制系统(DVCS)
作用:撤销还原,多人协作,分支管理,远程仓库管理
- 版本控制:记录文件历史,支持回退到任意版本。
- 分支管理:轻量级分支,支持并行开发。
- 协作开发:通过远程仓库(如 GitHub)实现多人协作。
- 代码备份:每个开发者拥有完整的仓库副本。
- 分布式版本控制系统和集中式的区别?
分布式:
不需要联网,也可以工作。
没有中央服务,每台自己就是服务器。
没有全局分支,自己的服务器可以创建n个分支,速度极快(本地操作)。
集中式:
必须联网才能工作
中央服务器出问题了,就没法工作
分支速度慢
| 对比维度 | Git(分布式) | SVN(集中式) |
|






