GIT习题

一、单项选择题

  1. `git add` 命令的作用是将文件修改提交到哪里?

A. 远程仓库

B. 本地仓库

C. 暂存区

D. 工作区

答案:C

解析:`git add` 是将工作区的修改存入暂存区,是提交前的临时缓存步骤。

  1. 新建一个分支并立刻切换到该分支,正确的命令是?

A. `git branch dev`

B. `git checkout -b dev`

C. `git switch dev`

D. `git merge dev`

答案:B

解析:`-b` 参数表示新建并切换;A 只创建不切换;C 只切换不新建;D 是合并分支。

  1. 文件只在工作区修改了,还没执行 `git add`,想撤销修改恢复原样,用哪个命令?

A. `git reset --hard`

B. `git restore 文件名`

C. `git revert`

D. `git stash`

答案:B

解析:`git restore` 用于丢弃工作区修改,一键还原文件到上次提交状态。

  1. `git pull` 等价于以下哪一组操作?

A. `git fetch + git merge`

B. `git fetch + git rebase`

C. `git add + git commit`

D. `git clone + git merge`

答案:A

解析:`git pull` 本质是先执行 `git fetch` 拉取远程内容,再自动执行 `git merge` 合并到当前分支。

  1. 要删除一个已经合并完成的本地分支,正确且安全的命令是?

A. `git branch -D dev`

B. `git branch -d dev`

C. `git delete dev`

D. `git rm dev`

答案:B

解析:`-d` 是安全删除,只删已合并的分支;`-D` 是强制删除,未合并也会删。


二、判断题

  1. `git commit` 会把代码直接提交到远程仓库。( )

答案:×

解析:`git commit` 只提交到本地仓库,推送到远程需要 `git push`。

  1. 执行 `git merge` 会生成一个新的合并提交,保留完整的分支提交历史。( )

答案:√

解析:merge 的特点就是不修改原有历史,生成新的合并节点,保留完整分支轨迹。

  1. 已经被 Git 跟踪的文件,写入 `.gitignore` 后会自动取消跟踪。( )

答案:×

解析:`.gitignore` 只对未跟踪的文件生效;已跟踪的需要先执行 `git rm --cached 文件名` 取消跟踪。

  1. `git stash` 会永久删除当前未提交的代码,无法恢复。( )

答案:×

解析:`git stash` 是临时暂存,用 `git stash pop` 可以完整恢复。

  1. 为了让提交历史更整洁,推荐在公共主分支上使用 `git rebase`。( )

答案:×

解析:公共分支禁止用 rebase,会改写历史导致同事代码冲突;公共分支统一用 merge。


三、简答题

  1. 请简单描述 Git 中工作区、暂存区、本地仓库、远程仓库的关系。

答案要点:

  • 工作区:本地写代码的文件夹

  • `git add` → 暂存区:临时缓存待提交内容

  • `git commit` → 本地仓库:生成永久版本记录

  • `git push` → 远程仓库:云端备份、多人协作共享

  1. `git fetch` 和 `git pull` 有什么区别?

答案要点:

  • `git fetch`:只下载远程更新,不自动合并,更安全

  • `git pull`:下载 + 自动合并,等价于 `git fetch + git merge`

  1. `git merge` 和 `git rebase` 有什么核心区别?分别适合什么场景?

答案要点:

  • merge:生成新合并提交,保留完整历史,适合公共分支合并

  • rebase:提交历史变直线,改写原有历史,适合个人私有分支整理

  • 原则:公共分支用 merge,个人分支用 rebase

  1. `.gitignore` 文件的作用是什么?如果配置的规则失效了怎么办?

答案要点:

  • 作用:指定不需要 Git 跟踪的文件(如依赖包、本地配置)

  • 失效原因:文件已被跟踪

  • 解决:`git rm --cached 文件名` 取消跟踪后重新提交

  1. `git reset` 和 `git revert` 都可以回退代码,核心区别是什么?

答案要点:

  • reset:直接回到某个版本,改写历史,适合本地未推送的提交

  • revert:生成反向新提交抵消修改,不改动原有历史,适合已推送的公共分支


四、场景实操题

  1. 你正在自己的分支写新功能,代码写了一半还没提交,突然接到紧急需求要去主分支改 bug,你该怎么操作?

答案步骤:

① `git stash` 暂存当前未完成的代码

② 切换到主分支修复 bug,提交并推送

③ 切回自己的分支,`git stash pop` 恢复代码继续开发

  1. 执行合并代码后出现了冲突,完整的处理流程是什么?

答案步骤:

① `git status` 找到冲突文件

② 打开文件,根据 `<<<<<<<` `=======` `>>>>>>>` 标记手动修改代码

③ 修改完成后 `git add 冲突文件`

④ `git commit` 完成合并

  1. 刚执行完 `git commit`,突然发现提交说明写错了,代码还没推送到远程,怎么修改?

答案:

执行 `git commit --amend -m "新的正确说明"`,直接修改最近一次提交记录,不会生成新提交。

  1. 不小心把错误代码推送到了远程公共主分支,怎么撤回才不会影响其他同事?

答案要点:

不能用 `git reset`(会改写公共历史),必须用 `git revert`:

① 找到要撤回的提交 ID

② 执行 `git revert 提交ID`,生成一个反向抵消的新提交

③ `git push` 推送到远程,原有历史保持不变,不影响他人

相关推荐
catoop16 小时前
用 Shell 包装函数,让单个命令拥有专属配置
git
Zguigo17 小时前
学会更高效的理解AI的输出?
人工智能·git·ai
鬼手点金21 小时前
上下文:Agent 的眼睛
java·前端·人工智能·git·深度学习
guohuang1 天前
让机器人安全失败:点云中断、TF 超时和控制器崩溃怎么测
git·安全·机器人
小道士写程序1 天前
Git 大文件问题解决办法
git
黑泽明Coding1 天前
如何重置git分支,清空分支所有提交历史
git
小堃学编程1 天前
Git远程开发操作指南
git
于眠牧北1 天前
雷电模拟器9/14搭配charles抓取自带浏览器接口9/14
经验分享·笔记·git
鬼手点金2 天前
Agent 的学习机制:后训练、上下文学习与外部化学习
java·人工智能·git·学习·自动化·nanogpt