当前位置: 首页 > 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.dtcms.com/a/276132.html

相关文章:

  • 人工智能安全基础复习用:可解释性
  • 通过渐进蒸馏实现扩散模型的快速采样
  • Java-线程池
  • 【机器学习实战笔记 16】集成学习:LightGBM算法
  • AV1高层语法
  • PostgreSQL HOT (Heap Only Tuple) 更新机制详解
  • Swin Transformer核心思路讲解(个人总结)
  • 文件上传漏洞2-常规厂商检测限制绕过原理讲解
  • 强化学习、PPO和GRPO的通俗讲解
  • C语言第一章数据类型和变量(下)
  • Java 大视界:基于 Java 的大数据可视化在智慧城市能源消耗动态监测与优化决策中的应用(2025 实战全景)
  • 视频分析应用的搭建
  • 【Linux-云原生-笔记】Apache相关
  • NE综合实验2:RIP与OSPF动态路由优化配置、FTP/TELNET服务部署及精细化访问控制
  • Java反射与注解
  • 树形动态规划详解
  • 大数据时代UI前端的智能化服务升级:基于用户情境的主动服务设计
  • 【PycharmPyqt designer桌面程序设计】
  • 【学习新知识】用 Clang 提取函数体 + 构建代码知识库 + AI 问答系统
  • GD32 CAN1和TIMER0同时开启问题
  • 《通信原理》学习笔记——第一章
  • 细谈kotlin中缀表达式
  • H2在springboot的单元测试中的应用
  • skywalking镜像应用springboot的例子
  • try-catch-finally可能输出的答案?
  • Docker-镜像构建原因
  • C语言基础教程--从入门到精通
  • Spring Boot整合MyBatis+MySQL+Redis单表CRUD教程
  • STM32中的RTC(实时时钟)详解
  • R 语言绘制 10 种精美火山图:转录组差异基因可视化