当前位置: 首页 > news >正文

Git 相关的常见面试题及参考答案

Git 相关的常见面试题及参考答案,适用于 C++ 工程师岗位的准备:
git常用命令如下:
clone
checkout
add
commit
rebase
stash


10.0.1. Git 的工作流程是怎样的?

Git 的核心流程包括三个区域:

  1. 工作区(Working Directory):当前正在编辑的文件。
  2. 暂存区(Staging Area / Index):通过 git add 添加修改。
  3. 本地仓库(Local Repository):通过 git commit 提交更改。

此外还有远程仓库(Remote Repository),通过 git pushgit pull 进行同步。


10.0.2. 如何初始化一个 Git 仓库?

git init              # 初始化本地仓库
git clone <url>       # 克隆远程仓库到本地

10.0.3. 如何查看 Git 提交历史?

git log               # 查看完整提交历史
git log --oneline     # 单行简洁显示
git log --graph       # 显示分支合并图

10.0.4. 如何将文件添加到暂存区?如何提交更改?

git add <file>        # 添加指定文件到暂存区
git add .             # 添加所有修改到暂存区git commit -m "描述"  # 提交更改并添加提交信息

10.0.5. 如何撤销某个已提交的更改?

  • 撤销最近一次提交(保留修改)

    git reset --soft HEAD~1
    
  • 撤销提交并删除修改

    git reset --hard HEAD~1
    
  • 创建一个新的提交来撤销某次提交

    git revert <commit-hash>
    

10.0.6. 如何解决 Git 冲突?

冲突通常发生在多人修改同一段代码并执行 git mergegit pull 时。

解决步骤如下:

  1. 打开冲突文件,找到冲突标记 <<<<<<<, =======, >>>>>>>
  2. 手动选择保留哪些修改。
  3. 删除冲突标记。
  4. 标记冲突已解决:
    git add <resolved-file>
    
  5. 提交合并结果:
    git commit
    

10.0.7. Git 中的分支有哪些类型?如何创建和切换分支?

  • 主分支(main/master)
  • 开发分支(develop)
  • 功能分支(feature/*)
  • 修复分支(hotfix/*)
  • 发布分支(release/*)
git branch feature-1      # 创建新分支
git checkout feature-1    # 切换分支
git checkout -b feature-2 # 创建并切换分支

10.0.8. 如何合并两个分支?

git checkout main
git merge feature-1
  • 如果发生冲突,按上述方式手动解决。
  • 可使用 git diff 查看差异。

10.0.9. 如何查看当前状态(未提交的修改)?

git status

该命令会显示:

  • 修改但未提交的文件
  • 已添加但未提交的内容
  • 未被追踪的新文件

10.0.10. 如何查看具体文件的修改内容?

git diff                # 查看未暂存的修改
git diff --cached       # 查看已暂存但未提交的修改
git diff <commit1> <commit2>  # 查看两次提交之间的差异

10.0.11. 如何推送本地分支到远程仓库?

git push origin feature-1

首次推送时可设置上游分支:

git push -u origin feature-1

之后可以直接使用:

git push

10.0.12. 如何从远程拉取最新代码?

git fetch origin        # 获取远程更新(不自动合并)
git pull origin main    # 获取并自动合并远程分支
  • fetch + merge 是更安全的方式,避免直接覆盖本地修改。

10.0.13. Git rebase 和 merge 的区别?

特性mergerebase
合并方式合并两个历史记录,生成新的提交将一个分支的改动移到另一个分支上重新应用
历史记录复杂,包含合并提交平直、清晰
是否改变历史是(慎用于公共分支)
使用场景多人协作的分支本地分支整理提交历史

10.0.14. 如何查看远程仓库信息?

git remote -v

可以查看远程仓库名称(如 origin)及其 URL。


10.0.15. 如何删除本地或远程分支?

git branch -d feature-1         # 删除本地分支
git branch -D feature-1         # 强制删除未合并的分支git push origin --delete feature-1  # 删除远程分支

10.0.16. 如何忽略某些文件(如编译中间文件)?

在项目根目录下创建 .gitignore 文件,并添加需要忽略的文件/目录模式:

# 忽略 build 目录
/build/
# 忽略临时文件
*.tmp
# 忽略 IDE 配置文件
.idea/
.vscode/

10.0.17. Git stash 的作用是什么?如何使用?

git stash 用于临时保存当前工作区的修改,以便切换分支或拉取代码。

常用命令:

git stash save "描述"   # 保存当前修改
git stash list          # 查看保存的修改列表
git stash apply         # 应用最近一次保存的修改
git stash drop          # 删除最近一次保存的修改

10.0.18. 如何查看某个文件的历史修改记录?

git blame <filename>

显示每一行是谁在哪次提交中修改的。


10.0.19. Git tag 的作用是什么?如何打标签?

tag 用于标记特定版本(如 v1.0.0)。

git tag v1.0.0                   # 创建轻量标签
git tag -a v1.0.0 -m "release"   # 创建带注释的标签git push origin v1.0.0           # 推送标签到远程
git push origin --tags           # 推送所有标签

10.0.20. Git 是什么?它与 SVN 的主要区别是什么?

  • Git 是一个分布式版本控制系统(DVCS),用于跟踪文件变更、协同开发。
  • SVN(Subversion)是一个集中式版本控制系统(CVCS)。
特性GitSVN
架构分布式集中式
性能更快(本地提交)较慢(每次提交需联网)
分支管理强大灵活(轻量级分支)复杂且笨重
数据完整性使用 SHA-1 哈希校验没有内置校验机制
离线操作支持不支持

以上内容涵盖了 Git 的基础概念、常用命令、分支管理、冲突解决等核心知识点,适用于 C++ 工程师岗位的面试准备。掌握这些内容有助于在实际开发中高效地进行版本控制与团队协作。

http://www.xdnf.cn/news/1109881.html

相关文章:

  • 国产电钢琴电子琴手卷钢琴对比选购指南
  • 2025年亚太杯(中文赛项)数学建模B题【疾病的预测与大数据分析】原创论文讲解(含完整python代码)
  • ESP32使用freertos更新lvgl控件内容
  • 搭建云手机教程
  • 聊下easyexcel导出
  • Java可变参数
  • 从基础加热到智能生态跨越:艾芬达用创新重构行业价值边界!
  • Go mod 依赖管理完全指南:从入门到精通
  • 代码随想录day28贪心算法2
  • 【AI News | 20250711】每日AI进展
  • Spring(四) 关于AOP的源码解析与思考
  • Java SE--抽象类和接口
  • 如何查看服务器当前用户的权限
  • GD32 CAN1和TIMER0同时开启问题
  • 深度学习15(GRU、LSTM+词嵌入+seq2seq+attention)
  • 电子基石:硬件工程师的器件手册 (五) - 三极管:电流放大的基石与开关的利刃
  • 7. JVM类加载器与双亲委派模型
  • 关于两种网络攻击方式XSS和CSRF
  • 二分法寻找无序序列的峰值
  • [Token]Token merging for Vision Generation
  • 学python,PyCharm 和 VSCode哪个更好用?
  • ChatRex RexSeek RexThinker: 结合多模态大语言模型的目标检测模型构建
  • vue3+vit+vue-router路由,侧边栏菜单,面包屑导航设置层级结构
  • 商业机密保卫战:如何让离职员工带不走的客户资源?
  • 六年级数学知识边界总结思考-上册
  • Rust Web 全栈开发(五):使用 sqlx 连接 MySQL 数据库
  • 【赵渝强老师】国产数据库TiDB的代理路由:TiProxy
  • 服务器怎么跑Python项目?
  • 【代码随想录】刷题笔记——哈希表篇
  • MySQL 中图标字符存储问题探究:使用外挂法,毕业论文——仙盟创梦IDE