协同开发
避免冲突
张三:改了 settings.py 第一行,提交了
李四:改了 settings.py 第二行,提交了
你也在改setting.py ,没有拉取代码,不知道他们提交了,动了第二行,但是跟李四代码不一样
你要提交,必须先拉取,一拉,把张三的,李四的都会加到你代码中,就会出冲突
如果你想避免冲突,勤拉取代码
协同开发
同学一:
- git clone 项目
- pycharm打开
git add .
当前目录下有个venv文件夹 ⇢ \dashrightarrow ⇢ 删除这个文件夹git commit -m 'ss'
设置用户名和邮箱git push origin master
推不上去git pull origin master
需要先拉下来
同学二:
- 在pycharm中改代码
- 改的不是同一个文件
git add .
git commit -m 'ss'
git push origin master
由于我们改了不是同一个文件,不会冲突git pull origin master
冲突解决
多人在同一分支开发
当推到远端发生冲突时,git pull origin master
先将远端拉下来,删除报错,看代码,如果改的一样,就留别人的,把自己的代码删除
分支合并
操作步骤
git branch dev
创建分支git checkout dev
切换到分支- 修改代码
git add.
git commit -m '修改'
git checkout master
切换到主分支,分支合并只能在主分支git merge dev
合并分支,出冲突了,解决冲突,再提交git add .
git commit -m
<>
gitlab使用
- 创建账号 ⇢ \dashrightarrow ⇢ 管理员审核
- 登录进去 ⇢ \dashrightarrow ⇢ 就能看到项目 ⇢ \dashrightarrow ⇢ (项目管理员把你添加成开发者了)
- 把代码clone下来,使用pycharm打开
- 写代码,本地提交
- 推送到远端 ⇢ \dashrightarrow ⇢ 先拉取代码
问题: 普通开发者,提交到master分支是不行的
- 创建一个dev分支 ⇢ \dashrightarrow ⇢ 提交到dev分支
- 后期由管理员做分支合并 ⇢ \dashrightarrow ⇢ 把dev合并到master中
线上分支合并
线下分支合并:git merge dev
线上分支合并
公司有个主分支 ⇢ \dashrightarrow ⇢ 只保留大版本信息,真正的开发在dev分支开发
你开发的代码,提交到dev分支了,功能写完了,要给用户看了,把dev分支合并到主分支
- 可以线下分支合并,合并完,推送上去 ⇢ \dashrightarrow ⇢ 没有权限,只能仓库管理员来做
- 线上分支合并:
- 提交:pr:
pull request
mr:merge request
- 提交:pr:
远端有分支,本地也有分支
- 远程创建,本地拉取
- 本地执行:
git pull origin dev
,git checkout dev
- 本地执行:
- 本地创建,提交到远端
- 本地执行:
git branch dev
,git checkout dev1
,git push origin dev1
- 本地执行:
操作步骤
- 远端创建dev分支
- 本地
git pull origin dev
git branch
查看看不到,直接checkout 到dev分支就可以了- dev分支写代码,本地提交,推送到远端dev
- 功能开发完了,普通开发者,提交pr
- 管理员点审查,测试通过 ⇢ \dashrightarrow ⇢ 同意合并 ⇢ \dashrightarrow ⇢ dev就合并到master
咱们分支结构
master dev bug
- 所有人在dev开发新功能,开发完,提交pr ⇢ \dashrightarrow ⇢ 合并到master ⇢ \dashrightarrow ⇢ 结束
- 每个人在自己分支开发,开发完,提交pr ⇢ \dashrightarrow ⇢ 合并到dev ⇢ \dashrightarrow ⇢ 你的功能开发完毕
- 管理员自己 提pr ⇢ \dashrightarrow ⇢ dev和master
远程仓库回滚(你不要去做)
- 本地回到 初始化的状态(主分支)
git reset --hard 版本号
- 强制推送到远端
git push origin master
git push origin master -f
失败
为开源项目贡献代码
- fork 开源代码 ⇢ \dashrightarrow ⇢ 你仓库就有这个代码
- clone你仓库的代码
- 写代码,提交到你仓库
- 你仓库,提交pr 你仓库的某个分支 合并到别人的某个分支
- 对方审核通过,同意,才ok
git工作流,git pull和git fetch,变基
-
git 工作流:git flow ⇢ \dashrightarrow ⇢ 分支方案
- 我们没有采用
- master dev bug
-
git pull 和 git fetch
- git pull 从远程仓库拉取代码:从远程获取最新版本并merge到本地
- git fetch 从远程仓库拉取代码:会将数据拉取到本地仓库 - 它并不会自动合并或修改当前的工作
- git pull =git fetch +merge
-
变基 rebase
- 多个提交记录整合成一个
- 解决多次合并分叉问题