协同开发流程
# 1 多人开发同一个项目
-张三:本地 版本库
-李四:本地 版本库
-我: 本地 版本库
----远程仓库:本地版本库内容--》推送到远程仓库-----
# 2 演示(我是项目管理员)
-1 增加几个开发者
-2 其它开发者:把代码拉到本地
git clone https://gitee.com/liuqingzheng/luffy_api.git
-3 其它开发者:使用pycharm打开
-在utils-->init.py中第五行加入 print('111')
-4 其它开发者:提交代码
git add .
git commit -m '改了xxx'
git push origin master # 正常能推上去
-5 我:进入到仓库中,就能看到它的提交了
-6 我:本地修改--utils---init.py
git add .
git commit -m '改了xxx'
# git push origin master # 报错
git pull origin master
git push origin master
1. 作为项目管理员
1.1 添加开发者
- 在Gitee项目设置中添加新的开发者,并为他们分配适当的权限。
1.2 初始设置
-
如果你还没有本地仓库,可以使用
git clone
命令从远程仓库克隆代码到本地。
git clone https://gitee.com/liuqingzheng/luffy_api.git
-
在本地进行初始的开发和提交。
2. 其他开发者
2.1 克隆项目
-
开发者使用
git clone
命令从远程仓库克隆代码到本地。
git clone https://gitee.com/liuqingzheng/luffy_api.git
2.2 使用PyCharm打开项目
- 打开PyCharm,选择“Open”选项,然后定位到刚才克隆下来的项目文件夹。
2.3 修改代码并提交
-
在PyCharm中修改代码,例如在
utils/init.py
文件的第五行加入print('111')
。 -
在PyCharm的VCS(Version Control System)工具窗口或使用命令行提交更改。
git add . git commit -m "在init.py中添加了打印语句"
-
推送更改到远程仓库。
git push origin <branch-name> # 替换<branch-name>为你的分支名,例如master或feature-branch
3. 合并代码(管理员或其他有权限的开发者)
3.1 拉取最新代码
-
在你的本地仓库中,拉取远程仓库的最新代码,确保你的本地仓库是最新的。
git pull origin <branch-name> # 替换<branch-name>为你要拉取的分支名
3.2 解决冲突(如果有)
- 如果在拉取代码时遇到冲突,使用文本编辑器解决冲突,然后重新提交。
3.3 合并分支(如果需要)
- 如果你在使用特性分支进行开发,并且该分支的代码已经通过测试并准备合并到主分支,你可以使用
git merge
命令或在Gitee等平台上进行合并请求(merge request)。
3.4 推送合并后的代码
-
在合并后,将更改推送到远程仓库。
git push origin <branch-name> # 替换<branch-name>为你要推送的分支名
注意事项
- 确保所有开发者都使用相同的分支策略和工作流程。
- 定期与团队成员沟通,确保大家的工作不会互相干扰。
- 使用特性分支来开发新功能或修复问题,而不是直接在主分支上工作。
- 使用代码审查(code review)来确保代码质量。
- 在合并代码之前,确保所有的测试都通过。
冲突解决
【 1 】简单的解决方法
# 1 由于有多人开发,一定会出冲突
# 2 出现冲突的原因如下:
1 多人在同一分支开发:改了同样文件
2 分支合并
# 注意:如果多人在同以分支开发,不想解决冲突
-频繁拉取代码
# 3 演示:多人统一分支开发出冲突
-1 张三改了 utils-init.py-->第9行,并且提交了
-2 我没有拉去代码,直接也改了第9行,并且提交到本地版本库
-3 我拉去远程代码---》拉去下来--》本地代码合并----》一合并出冲突了
-4 冲突样子
<<<<<<< HEAD
print('111222') # 我的代码
=======
print('111222') # 别人代码
>>>>>>> d93673fc5144d64cb4c31cb34e7a16280fdcb39f
-5 解决冲突
-保留两个人的代码
-保留它的代码
-保留我的代码,删除它的代码
-6 本地提交
-7 提交到远端
初始状态
假设 utils/init.py
文件的初始内容是:
# utils/init.py
print("Initial content")
张三的操作
- 张三拉取代码(假设这是第一次,所以直接就是初始状态)
- 张三修改
utils/init.py
# utils/init.py
print("Initial content")
print("Added by Zhang San")
- 张三提交并推送到远程
git add utils/init.py
git commit -m "Added a line by Zhang San"
git push origin main
你的操作
注意:此时你没有拉取张三的更改。
- 你直接修改
utils/init.py
# utils/init.py
print("Initial content")
print("Added by You")
- 你尝试提交到本地(这一步是可选的,但展示了你的本地提交)
git add utils/init.py
git commit -m "Added a line by You"
冲突出现
- 你尝试拉取远程代码
git pull origin main
Git 会提示有冲突,并告诉你需要手动解决。
解决冲突
- 打开
utils/init.py
文件
你会看到类似这样的冲突内容:
# utils/init.py
print("Initial content")
<<<<<<< HEAD
print("Added by You")
=======
print("Added by Zhang San")
>>>>>>> main
- 手动解决冲突
例如,你选择合并两个人的更改,但你可能需要修改一下以保持代码整洁:
# utils/init.py
print("Initial content")
print("Added by You")
print("Also added by Zhang San")
- 保存文件并标记为已解决
使用git add
命令将已解决的冲突文件标记为已解决:
git add utils/init.py
提交并推送
- 提交更改
git commit -m "Resolved merge conflict in utils/init.py"
- 推送更改到远程
git push origin main
现在,你已经成功解决了冲突,并将更改推送到了远程仓库。
注意事项
- 在实际开发中,冲突可能会更复杂,涉及多个文件的多个更改。但基本的解决步骤是相同的。
- 使用版本控制系统(如 Git)时,重要的是要经常与团队成员沟通,并在开始工作之前拉取最新的代码。这有助于减少冲突的发生。
- 当遇到冲突时,不要害怕。Git 提供了很好的工具来帮助你解决它们。