Git多人协作开发流程

1. 克隆远程仓库

首先,每个开发者需要从远程仓库克隆项目到本地。

1
git clone <远程仓库URL>

具体的步骤可以参考GitHub帮助文档-Cloning a repository

注意事项

从GitHub克隆仓库,配置SSH公钥通常是一个很好的实践。具体可以参考GitHub SSH公钥配置

远程分支在本地,通常是以origin/branch-name的形式表示。它的作用只是指示远程分支的开发进度,并不会干扰本地分支。
实际上只有在远程仓库上创建了分支,或者将本地分支push到了远程仓库,才会有远程分支。

2. 创建并切换分支

为避免直接在主分支上工作,每个开发者应创建自己的特性分支。

1
git checkout -b feature-branch

上述命令会创建一个名为feature-branch的新分支,并立即切换到该分支。如果只是创建一个新分支,不切换到该分支,可使用git branch feature-branch

3. 开发与提交

在特性分支上进行开发,定期提交代码。

1
2
git add .
git commit -m "提交信息:描述本次修改内容"

4. 同步远程仓库更新

在开发过程中,需定期从远程主分支获取最新代码并合并到本地,避免后续合并冲突!!

1
2
git fetch origin main
git merge origin/main

当然,上述的命令也可以通过一条命令实现:

1
git pull origin main

具体的步骤可以参考GitHub帮助文档-Syncing a fork

5. 推送分支到远程仓库

完成某段功能时,将本地分支推送到远程仓库。

1
git push origin feature-branch

6. 创建 Pull Request

在GitHub等平台上,从自己的特性分支向主分支发起Pull Request(PR)。

7. 代码审查

团队成员审查PR中的代码变更,可提出修改建议或直接在网页上进行评论。

8. 修改与反馈

根据审查意见,在本地修改代码后提交,并推送到远程分支。

1
2
3
git add . # 添加修改
git commit --amend # 修改最近一次提交
git push origin feature-branch --force-with-lease # 强制推送,注意保护已有工作

9. 合并 Pull Request

审查通过后,项目管理员或有权限的成员合并PR到主分支。

10. 删除已合并的分支(可选)

保持仓库整洁,合并后可考虑删除远程和本地的特性分支。

1
2
git branch -d feature-branch
git push origin --delete feature-branch

11. 更新本地主分支

最后,拉取并合并最新的主分支到本地,为下一轮开发做准备。

1
2
git checkout main
git pull origin main

总结:

Git多人开发是较为复杂的话题,这里介绍一种基础的模式,即Feature-branch的模式,适合小型团队.进阶到大型团队,可能会需要更加深入的Git flow开发流.

多人协作开发时,主分支是公共的,所以需要使用分支来隔离开发。因此通常会创建开发分支。开发过程中,不断关注当前远程主分支的最新状态,减少发生合并冲突的可能.在本地完成开发

在本地开发完成后,再将本地分支推送到远程开发分支,申请合并到远程主分支即可。

参考链接:Feature-branch开发流 GIT-FLOW开发流

可能遇到的问题:

  1. 冲突: 分支合并时,如果存在冲突,需要手动解决。这里我推荐使用
    IDE的Git工具,而不是git diff命令.它会自动提示冲突的位置,有更强的文本比对能力。也更加直观.以Jetbrains为例,相关的插件可以参考Git插件

  2. 开发过程需要切换分支,但需要保留工作区的状态,可以使用git stash命令。具体可以参考Git stash命令

  3. 另外强烈推荐一个Git命令的学习网站,它提供可视化的Git分支树示,方便理解Git的分支管理流程: Git-Visualize or
    Learning-git-branching.根据我的经验,大约三四个小时可以刷完,通过项目中不断使用相信能有较好的掌握.