做网站要买多少服务器空间丰台体育馆网站建设
协同开发
避免冲突
张三:改了 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 requestmr: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 mastergit 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 
- 多个提交记录整合成一个
 - 解决多次合并分叉问题
 
 
