高效掌握 Git:最常用命令与面试高频问题总结

一、实际工作中最常用的 Git 命令

在日常开发和团队协作中,掌握以下 Git 命令即可覆盖绝大多数场景:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 克隆远程仓库
git clone <仓库地址>

# 查看当前状态
git status

# 查看文件变更
git diff [文件名]

# 添加到暂存区
git add <文件名或.>

# 提交到本地仓库
git commit -m "简明扼要的提交说明"

# 查看分支
git branch

# 创建并切换分支
git switch -c <分支名> # 新推荐
# 或
git checkout -b <分支名>

# 切换分支
git switch <分支名>
# 或
git checkout <分支名>

# 合并分支
git merge <分支名>

# 拉取远程更新并合并
git pull

# 仅拉取远程更新(不合并)
git fetch

# 推送本地分支到远程
git push

# 查看提交历史
git log --oneline --graph --all

# 撤销操作
git reset [--soft|--mixed|--hard] <commit>
git revert <commit>

这些命令覆盖了代码同步、分支管理、冲突解决、历史回溯等核心操作,是面试和实际开发的基础[1][2][10]。


二、面试中最常见的 Git 问题与高分答案

1. 什么是 Git?与 SVN 有何区别?

答:
Git 是分布式版本控制系统(DVCS),每个开发者本地都有完整仓库历史,支持离线操作,分支管理灵活高效。SVN 是集中式版本控制系统,依赖中心服务器,分支操作较笨重。Git 更适合现代敏捷开发[3][5][7]。

2. Git 的三个核心区域是什么?

答:

  • 工作区(Working Directory):本地实际编辑文件的地方
  • 暂存区(Staging Area/Index):准备提交的更改
  • 本地仓库(Repository):已提交的历史快照
    常用命令:git add(工作区→暂存区),git commit(暂存区→本地仓库)[1][10]。

3. 什么是 Commit?如何写好 Commit Message?

答:
Commit 是代码仓库的一个快照,包含作者、时间、变更内容。好的 Commit Message 应简洁明了,首行为简短标题,必要时空一行后补充详细说明,便于团队协作和历史追踪[8]。

4. 为什么要用分支(Branch)?

答:
分支用于隔离不同开发任务(如新功能、Bug 修复),保证主分支稳定,支持多人并行开发。分支合并后可统一集成[6]。

5. git fetch 和 git pull 有什么区别?

答:

  • git fetch:只下载远程更新,不自动合并
  • git pull:等于 fetch + merge(或 rebase),下载并自动合并到当前分支
    fetch 更安全,不会影响当前工作区[1][2]。

6. .gitignore 有什么作用?应忽略哪些文件?

答:
.gitignore 用于指定哪些文件/目录不纳入版本控制。应忽略如编译输出、依赖目录(如 node_modules)、临时文件、敏感信息等[10]。

7. 合并冲突(Conflict)如何解决?

答:
手动编辑冲突文件,保留需要的内容,删除冲突标记(<<<<<<<、=======、>>>>>>>),然后 git add 解决后的文件,最后 git commit 完成合并[1][6]。

8. 如何撤销提交?git reset 和 git revert 区别?

答:

  • git reset:回退到指定提交,可选择保留或丢弃更改(–soft、–mixed、–hard),会修改历史,适合本地操作
  • git revert:生成一个新提交来“反做”指定提交,不会修改历史,适合已推送到远程的公共分支[9]。

9. 暂存区(Staging Area)为什么重要?

答:
暂存区让你精确控制每次提交的内容,可只提交部分更改,便于代码审查和分步提交,提升协作效率[10]。

10. 你常用的 Git 工作流?

答:
常见流程:

  1. 从主分支拉新分支(如 feature/xxx)
  2. 在新分支开发,定期 git pull 主分支同步
  3. 功能完成后合并回主分支,解决冲突
  4. 推送到远程仓库
    体现了分支管理和团队协作的最佳实践[6][10]。

总结

  • 命令要精,熟练掌握上面列出的常用命令即可应对绝大多数实际场景和面试问题。
  • 面试问题要答得有条理,突出分布式、分支管理、冲突解决、撤销操作等核心点。
  • 建议结合实际项目多练习,理解每个命令背后的原理和场景。