# 1.什么是Git

Git是一个分布式版本控制系统,用于跟踪文件更改并协调多人协作开发项目。

# 2.Git的主要特点

  • 分布式系统:每个开发者都有完整的代码仓库副本
  • 高效性能:大多数操作在本地完成,速度快
  • 数据完整性:使用SHA-1哈希确保数据不被篡改
  • 分支模型:轻量级分支使得分支操作非常高效
  • 暂存区:允许选择性提交文件的部分更改

# 3.Git vs SVN (集中式版本控制系统)

特性 Git SVN
架构 分布式 集中式
速度 快(本地操作) 慢(网络依赖)
分支 轻量级 重量级
离线工作 支持 不支持
存储方式 快照 差异

# 4.Git核心概念

    1. Git工作流程
    • 工作目录(Working Directory):本地文件系统
    • 暂存区(Staging Area/Index):准备提交的更改
    • 本地仓库(Local Repository):提交历史
    • 远程仓库(Remote Repository):共享的中央仓库
    1. Git对象模型
    • Blob:存储文件内容
    • Tree:存储目录结构和文件名
    • Commit:存储提交信息、作者、时间等
    • Tag:为特定提交打标签
    1. Git引用
    • HEAD:当前所在的分支或提交
    • 分支(Branch):指向特定提交的可变指针
    • 标签(Tag):指向特定提交的不可变指针

# 5.git add、git commit和git push的区别

git add 将工作目录的更改添加到暂存区
git commit 将暂存区的更改记录到本地仓库
git push 将本地仓库的更改推送到远程仓库

# 6.merge和rebase的区别

merge:保留历史,创建新的合并提交
rebase:重写历史,将更改应用到目标分支最新提交之后
merge更安全,rebase能创建更线性的历史

# 7.什么是.gitignore文件?

指定Git应忽略的文件和目录模式
常用于忽略日志、临时文件、依赖目录等

# 8.什么是Git钩子(git hooks)?

  • 在特定Git操作前后自动执行的脚本
  • 存储在.git/hooks目录中
  • 常用钩子:pre-commit, post-commit, pre-push

# 9.分支命名规范

    1. 功能分支(Feature Branches)
    • 格式:feature/<开发者>-<功能描述> 或 feat/<功能名>
    • 示例:feature/john-user-auth、feat/payment-gateway 适用场景:开发新功能时从 develop 或 main 分支创建,开发完成后合并回主分支。
    1. 修复分支(Fix/Bugfix Branches)
    • 格式:fix/<问题描述> 或 bugfix/<issue-id>
    • 示例:fix/login-error、bugfix/issue-123 适用场景:修复线上或测试环境发现的 Bug,完成后合并回 develop 或 main。
    1. 发布分支(Release Branches)
    • 格式:release/<版本号> 或 release-<YYYYMMDD>
    • 示例:release/v1.2.0、release-20240504 适用场景:用于版本发布前的最后测试和修复,最终合并到 main 并打 Tag。
    1. 热修复分支(Hotfix Branches)
    • 格式:hotfix/<问题描述> 或 hotfix-<issue-id>
    • 示例:hotfix/db-connection-fail、hotfix-issue-456 适用场景:紧急修复生产环境 Bug,从 main 创建,修复后合并回 main 和 develop。

# 10.多人协作最佳实践

    1. 定期同步主分支:
    • 每天开始开发前,先 git pull --rebase 更新本地代码。
    1. 小步提交,频繁合并:
    • 避免长时间不合并,减少冲突概率。
    1. 使用 Pull Request(PR)/ Merge Request(MR):
    • 在 GitHub/GitLab 上发起 PR,进行 Code Review 后再合并。
    1. 删除已合并的分支:
    • 避免分支堆积,保持仓库整洁:
git branch -d feature/login  # 删除本地分支
git push origin --delete feature/login  # 删除远程分支
1
2
    1. 避免直接 Push 到 main/develop:
    • 强制通过 PR/MR 合并,确保代码质量。

# 11.git pull vs git merge

特性 git pull git merge
本质 git fetch(下载远程最新代码) + git merge(合并到当前分支) 的组合命令 单纯合并分支
使用场景 从远程仓库同步最新代码 合并任意两个分支(本地或远程)
是否涉及远程 必须指定远程分支 可合并本地分支
默认行为 自动合并(相当于 git merge) 需手动指定目标分支
冲突处理 直接在当前工作区触发冲突 需先切换到目标分支再合并
历史记录 可能产生合并提交(Merge Commit) 同上
lastUpdate: 5/5/2025, 8:38:10 AM