Git 工作流程 
本文使用简化版 Github Flow 作为示例,介绍 Git 的工作流程。
我们只有一个长期分支 main,当需要新功能时,从 main 分支创建一个新的分支 feat-XXX,然后在 feat-XXX 分支上进行开发,开发完成后,将 feat-XXX 分支合并到 main 分支。
完整的开发流程如下:
- git pull:我们在- main分支上,拉取最新代码,确保本地代码最新
- git checkout -b feat-dev:切换到- feat-dev分支,如果没有此分支,则自动创建
- 在 feat-dev分支上进行开发
- git add .+- git commit -m "feat: add A":提交代码
- git push origin feat-dev:将- feat-dev分支推送到远程仓库
- git checkout main:切换到- main分支
- git pull:拉取最新代码,确保- main分支最新
- git merge feat-dev:将- feat-dev分支合并到- main分支
- 此时,如果有冲突,需要解决冲突,然后重新提交
- git push origin main:将- main分支推送到远程仓库
- 如果功能不再开发,可删除 feat-dev分支:git branch -d feat-dev,如果需要继续开发,可使用git checkout feat-dev切换到feat-dev分支
- 如果功能继续开发,使用 git reset --hard origin/main:确保feat-dev分支和main分支一致
- git push origin feat-dev:将- feat-dev分支推送到远程仓库,确保远程仓库和本地仓库一致
如果你在 main 分支上没有权限,可从第 5 步开始,通过 Pull Request 的方式合并代码。
Pull Request 提供三种合并代码的方式:
- Merge:将 feat-dev分支合并到main分支,保留feat-dev分支的提交记录
- Squash and Merge:将 feat-dev分支合并到main分支,将feat-dev分支的提交记录合并为一个提交记录
- Rebase and Merge:将 feat-dev分支合并到main分支,将feat-dev分支的提交记录合并到main分支上
压缩和变基都可能导致提交记录的丢失,所以在合并代码时,我们一般直接使用 Merge 方式。