【Git】多人协作开发_git多人协作开发流程
Git目录
- 多人协作开发(一)
- 多人协作开发(二)
-
- 1. 本地创建分支
-
- 开发者1 操作
- 开发者2 操作
- 2. 拉取远程的 feature-2 分支
-
- 拉取远程分支内容
- 3. 合并 feature-1 和 feature-2 至 master
-
- Pull Request 审查合并
- 4. 解决合并冲突
- 5. 删除远程分支
多人协作开发(一)
我们可以分别用Linux机器和Windows机器来模拟开发者1和开发者2,依旧是采用我们上面已经创建的仓库 remote-gitcode
。
1. 开发者1 创建一个分支dev
开发者1 创建一个分支 dev
,然后开发者1和开发者2都同时在这个分支上进行操作。
👉 你在哪个分支上工作,就从那个分支 push 自己:
2. 开发者2 拉取远程仓库
打开 bash 进行 clone 远程仓库:
git clone 远程仓库地址
当 clone 的时候,本地仓库就只有 master
分支,那么就要获取 dev
分支。如果本地还没有 dev
,Git 会自动从远程的 origin/dev
创建一个对应的本地分支,并自动追踪它。
git checkout -b dev origin/dev
将本地 dev
分支和远程的 dev
分支进行建立链接,开发者2的本地也具有 dev
分支了。
3. 开发者1 对远程仓库进行推送
切换到开发者2中,可以看到正常的进行对 file.txt
文件进行修改,可是 push 的时候却发生错误,提示当前的本地与远程仓库有区别!
我们应该先进行 pull 来更新本地仓库!
git pull origin dev
再次 push 又会发现失败,出现合并冲突问题,需要手动进行解决!!!
解决完冲突后,这里要特别注意,要重新进行 add .
和 commit -m
来重新进行推送,再次进行 push 就可以上传成功,开发者2 新添加的 bbb
内容成功推送。
此时可以在远程的 dev
分支上看到我们想要得到的结果:file.txt
文件内有开发者1添加的“aaa”,有开发者2添加的 bbb
。
接下来就可以用 master
来合并 dev
分支!!!
可以看到 master
分支上没有这两行代码!
4. 将内容合并至 master
4.1 提交 Pull Request
开发者1 和开发者2 在远程仓库创建一个 Pull Request,提交合并请求。
4.2 本地操作:
- 在
dev
分支和master
分支上,执行如下命令:
git checkout mastergit merge devgit push origin master
由于在 master
上进行 merge dev
,可能会导致冲突,因此应该在本地的 dev
上进行 merge master
。这样就算有冲突,也可以在本地解决。解决完冲突后,再用 master
来 merge dev
,就不会有问题。
步骤如下:
- 更新本地
master
,先pull
防止用dev
merge 的不是最新的master
。
git pull origin master
- 用
dev
mergemaster
,在dev
解决合并冲突。
git merge master
- 用
master
mergedev
,将dev
合并到master
。
git checkout mastergit merge dev
这样就可以看到 master
分支上的 file.txt
被同步更新了。
完成后,可以同时让开发者1和开发者2对 dev
分支进行删除。
多人协作开发(二)
1. 本地创建分支
要保证本地的 master
是最新的,先 pull
操作,然后再次创建 dev
分支。
开发者1 操作
git checkout mastergit pull origin mastergit checkout -b dev
开发者2 操作
git checkout mastergit pull origin mastergit checkout -b dev
可以看到每次开发都是自己创建的分支,然后进行 push,每次都能成功,不会遇到冲突的问题。因为我们是在最新的 master
上创建的分支,然后自己创建的分支只有自己开发的时候能够用上,所以不会出现 push 冲突的问题。
2. 拉取远程的 feature-2 分支
突然,开发者2生病了,开发者1需要担起开发 feature-2
分支的重任!这时需要从远程拉取 feature-2
分支进行开发。此时,我们又回到了多人开发一中的情形,开发者1和开发者2在同一个分支开发。
拉取远程分支内容
使用如下命令拉取远程 feature-2
分支的内容:
git pull origin feature-2
拉取到远程的 origin/feature-2
分支后,本地没有这个分支,所以需要创建并切换至 feature-2
分支。
git checkout -b feature-2 origin/feature-2
此时,开发者1就能够在 feature-2
分支上继续开发。
3. 合并 feature-1 和 feature-2 至 master
最后,开发者1和开发者2将各自的 feature-1
和 feature-2
分支合并到 master
分支上。
现在就是又遇到了合并feature-1的问题,为了避免冲突 我们就还是再feature-1分支上来合并master
每次feature-1合并master之前 就要先保证master是最新的,所以要切换到master进行pull再用master进行合并merge
Pull Request 审查合并
创建一个 Pull Request 提交审查,确保两个分支都没有冲突。
4. 解决合并冲突
每次合并 feature-1
到 master
之前,需要保证 master
是最新的。可以使用以下命令:
git checkout mastergit pull origin mastergit merge feature-1
如果在合并时没有冲突,Git 会直接合并;如果有冲突,需要手动解决冲突。
合并完成后,就可以提交合并请求,合并到 master
分支。
当我们merge master的时候跳转到当前页面就说明没用任何问题,没用产生冲突,ctrl + x 就会退出该页面!
5. 删除远程分支
对feature-1进行pull-request合并
删除远程分支后,本地仍然可以看到已删除的远程分支。此时,可以使用以下命令移除远程已删除的分支记录:
git remote prune origin
# 总结不易~本章节对我有很大的收获, 希望对你也是!!!