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

发布于:2025-07-15 ⋅ 阅读:(12) ⋅ 点赞:(0)

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 的区别?

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

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)。
特性 Git SVN
架构 分布式 集中式
性能 更快(本地提交) 较慢(每次提交需联网)
分支管理 强大灵活(轻量级分支) 复杂且笨重
数据完整性 使用 SHA-1 哈希校验 没有内置校验机制
离线操作 支持 不支持

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


网站公告

今日签到

点亮在社区的每一天
去签到