Git代码提交与分支管理

619 阅读3分钟

一、代码提交(Commit)

  1. 提交步骤

    • 添加改动到暂存区
      git add <file/directory>  # 添加指定文件/目录
      git add .                 # 添加所有改动(包括新文件、修改、删除)
      
    • 提交到本地仓库
      git commit -m "描述性提交信息"  # 提交并添加简短说明
      git commit -v                # 提交并查看详细改动内容
      
  2. 提交规范

    • 约定式提交(Conventional Commits)
      推荐格式:类型(作用域): 描述,如:
      feat(auth): 添加用户登录功能
      fix(api): 修复订单接口500错误
      docs: 更新README安装说明
      
    • 类型参考feat(新功能)、fix(修复)、docs(文档)、style(格式)、refactor(重构)、test(测试)、chore(杂项)。
  3. 忽略文件(.gitignore)

    • 在项目根目录创建.gitignore,排除临时文件、日志、依赖等,如:
      *.log
      node_modules/
      .env
      

二、分支管理(Branching)

  1. 常用操作

    • 创建/切换分支
      git branch <branch-name>    # 创建分支
      git checkout <branch-name> # 切换分支
      git switch <branch-name>   # (Git 2.23+) 更安全的切换命令
      git checkout -b <branch-name> # 创建并切换分支
      
    • 查看分支
      git branch -a  # 查看所有分支(本地+远程)
      git branch -v  # 查看分支最新提交
      
  2. 合并与变基

    • 合并分支(Merge)
      git checkout main         # 切换到目标分支(如main)
      git merge feature-branch  # 合并feature分支到main
      
      • 保留分支历史,生成合并提交。
    • 变基(Rebase)
      git checkout feature-branch
      git rebase main           # 将feature分支的提交变基到main最新提交后
      
      • 使历史线性化,避免冗余合并提交。注意:不要在公共分支(如main)上使用!
  3. 冲突解决

    • 冲突文件会标记为Unmerged paths,手动编辑后标记为已解决:
      git add <resolved-file>  # 标记冲突已解决
      git commit              # 完成合并/变基提交
      

三、分支策略(常见工作流)

  1. Git Flow

    • 分支类型
      • main:稳定版(生产环境)
      • develop:开发主线
      • feature/*:新功能分支
      • release/*:预发布分支
      • hotfix/*:紧急修复分支
    • 适用场景:定期发布、版本控制严格的项目。
  2. GitHub Flow

    • 核心规则
      • main分支始终可部署。
      • 新功能通过feature/*分支开发,合并前需通过测试和Code Review。
    • 适用场景:持续交付的Web应用。
  3. GitLab Flow

    • 引入环境分支(如productionstaging),通过上游优先原则合并。

四、远程协作

  1. 推送与拉取

    • 推送分支到远程
      git push -u origin <branch-name>  # 首次推送并关联远程分支
      
    • 获取远程分支
      git fetch origin                  # 获取远程更新
      git pull origin <branch-name>    # 拉取并合并(= fetch + merge)
      
  2. 删除分支

    • 本地分支
      git branch -d <branch-name>  # 删除已合并的分支
      git branch -D <branch-name>  # 强制删除未合并分支
      
    • 远程分支
      git push origin --delete <branch-name>
      

五、标签(Tag)管理

  1. 创建标签
    git tag -a v1.0.0 -m "正式发布版本1.0.0"  # 创建附注标签
    git push origin v1.0.0                   # 推送标签到远程
    

六、最佳实践

  1. 分支命名
    • 清晰明确,如feature/user-authfix/header-styling
  2. 提交原子化
    • 每个提交只做一件事,避免混杂多个修改。
  3. 及时清理分支
    • 合并后删除无用的本地/远程分支,保持仓库整洁。
  4. 善用git stash
    • 临时保存未提交的改动:
      git stash        # 暂存当前工作
      git stash pop    # 恢复最近暂存内容