一、Git环境搭建与基础配置
1.1 本地仓库初始化
在全新目录中执行以下命令可快速创建本地Git仓库:
mkdir my-project && cd my-projectgit init
此操作会生成隐藏的.git目录,包含版本控制所需的元数据。建议立即创建初始提交:
touch README.mdgit add .git commit -m "Initial commit"
1.2 全局用户配置
Git通过全局配置文件存储用户信息,推荐在首次使用时完成设置:
git config --global user.name "Your Name"git config --global user.email "your.email@example.com"git config --global core.editor vim # 设置默认编辑器
配置信息存储在~/.gitconfig文件中,可通过git config --list查看所有配置项。对于团队协作项目,建议同时在项目根目录的.git/config中设置项目级配置。
二、远程仓库管理
2.1 远程仓库克隆
从托管平台获取项目代码的标准化流程:
git clone [remote-repository-url]cd [repository-name]
SSH协议与HTTPS协议对比:
| 协议类型 | 优点 | 缺点 |
|————-|———|———|
| SSH | 安全性高,无需重复认证 | 需配置SSH密钥 |
| HTTPS | 无需特殊配置 | 每次操作需输入凭证 |
2.2 远程仓库关联
对于已存在的本地仓库,可通过以下命令添加远程关联:
git remote add origin [remote-url]git remote -v # 验证远程地址
典型应用场景:
- 将本地开发仓库推送到新创建的远程仓库
- 切换代码托管平台时重新关联远程地址
- 多远程仓库管理(如同时关联GitHub和自建GitLab)
三、核心工作流实践
3.1 标准开发流程
- 创建特性分支:
git checkout -b feature/login-page
- 开发迭代:
git add .git commit -m "Implement login form validation"
- 代码同步:
git fetch origingit rebase origin/main # 推荐使用rebase保持线性历史
- 推送审查:
git push -u origin feature/login-page
3.2 分支管理策略
主流分支模型对比:
- Git Flow:适合大型项目,严格区分
feature/、release/、hotfix/等分支类型 - GitHub Flow:简化流程,仅保留
main和特性分支 - Trunk-Based Development:超短生命周期分支,适合持续交付场景
推荐实践:
# 删除已合并的本地分支git branch --merged | grep -v "\*" | xargs git branch -d# 删除远程分支git push origin --delete feature/old-implementation
四、高级协作技巧
4.1 代码审查流程
- 通过Pull/Merge Request发起审查
- 使用
git diff进行代码比对:git diff origin/main...HEAD # 查看待推送变更
- 针对性评论建议使用行注释功能
- 审查通过后执行Squash合并:
git rebase -i HEAD~3 # 将3个提交合并为1个
4.2 冲突解决策略
常见冲突场景处理:
- 自动合并失败:
git mergetool # 启动图形化冲突解决工具
- 二进制文件冲突:
- 保留最新版本或手动选择文件
- 建议通过
.gitattributes设置二进制文件合并策略
- 逻辑冲突:
- 通过
git blame追溯代码变更历史 - 与相关开发者沟通确认业务逻辑
五、性能优化与安全实践
5.1 仓库维护命令
git gc --auto # 自动清理无用对象git repack -a -d # 重新打包存储对象git fsck --full # 检查仓库完整性
5.2 安全最佳实践
- 凭证管理:
- 避免在命令行直接输入密码
- 使用
git-credential-manager等凭证助手 - 定期轮换SSH密钥
-
提交历史清理:
# 从历史中移除敏感文件git filter-repo --path sensitive-file.txt --invert-paths
-
子模块安全:
- 优先使用
git subtree替代子模块 - 定期更新子模块引用
六、常见问题解决方案
6.1 推送被拒绝处理
# 强制推送(谨慎使用)git push --force-with-lease origin branch-name# 更安全的替代方案git push --force-with-lease=refs/heads/branch-name:expected-commit-hash
6.2 恢复误删文件
# 恢复单个文件git checkout [commit-hash]^ -- path/to/file# 恢复整个提交git cherry-pick [commit-hash]
6.3 大文件处理
- 使用Git LFS管理大型二进制文件
- 通过
.gitignore排除构建产物:# 典型.gitignore配置示例*.log*.tmpnode_modules/dist/
通过系统化的版本控制实践,开发团队可实现:
- 代码变更的可追溯性
- 并行开发的高效协作
- 发布流程的标准化管理
- 历史版本的快速回滚
建议结合具体业务场景建立定制化的Git规范,并通过自动化工具(如pre-commit钩子)强制执行代码质量检查。对于分布式团队,可考虑搭建自有的Git服务器或使用主流云服务商提供的托管服务,实现更灵活的权限管理和审计追踪。