git远端协同开发、解决冲突、分支合并、gitlab使用、远程仓库回滚、为开源项目贡献代码、git工作流,git pull和git fetch,变基

协同开发

避免冲突

张三:改了 settings.py 第一行,提交了

李四:改了 settings.py 第二行,提交了

你也在改setting.py ,没有拉取代码,不知道他们提交了,动了第二行,但是跟李四代码不一样

你要提交,必须先拉取,一拉,把张三的,李四的都会加到你代码中,就会出冲突

如果你想避免冲突,勤拉取代码

协同开发

同学一:
  1. git clone 项目
  2. pycharm打开
  3. git add .当前目录下有个venv文件夹 ⇢ \dashrightarrow ⇢ 删除这个文件夹
  4. git commit -m 'ss'设置用户名和邮箱
  5. git push origin master推不上去
  6. git pull origin master需要先拉下来
同学二:
  1. 在pycharm中改代码
  2. 改的不是同一个文件
  3. git add .
  4. git commit -m 'ss'
  5. git push origin master 由于我们改了不是同一个文件,不会冲突
  6. git pull origin master

冲突解决

多人在同一分支开发

当推到远端发生冲突时,git pull origin master先将远端拉下来,删除报错,看代码,如果改的一样,就留别人的,把自己的代码删除

分支合并

操作步骤

  1. git branch dev创建分支
  2. git checkout dev切换到分支
  3. 修改代码
  4. git add.
  5. git commit -m '修改'
  6. git checkout master切换到主分支,分支合并只能在主分支
  7. git merge dev合并分支,出冲突了,解决冲突,再提交
  8. git add .
  9. git commit -m
    <>

gitlab使用

  1. 创建账号 ⇢ \dashrightarrow ⇢ 管理员审核
  2. 登录进去 ⇢ \dashrightarrow ⇢ 就能看到项目 ⇢ \dashrightarrow ⇢ (项目管理员把你添加成开发者了)
  3. 把代码clone下来,使用pycharm打开
  4. 写代码,本地提交
  5. 推送到远端 ⇢ \dashrightarrow ⇢ 先拉取代码

问题: 普通开发者,提交到master分支是不行的

  1. 创建一个dev分支 ⇢ \dashrightarrow ⇢ 提交到dev分支
  2. 后期由管理员做分支合并 ⇢ \dashrightarrow ⇢ 把dev合并到master中

线上分支合并

线下分支合并:git merge dev

线上分支合并

公司有个主分支 ⇢ \dashrightarrow ⇢ 只保留大版本信息,真正的开发在dev分支开发

你开发的代码,提交到dev分支了,功能写完了,要给用户看了,把dev分支合并到主分支

  • 可以线下分支合并,合并完,推送上去 ⇢ \dashrightarrow ⇢ 没有权限,只能仓库管理员来做
  • 线上分支合并:
    • 提交:pr:pull request mr:merge request
远端有分支,本地也有分支
  1. 远程创建,本地拉取
    • 本地执行:git pull origin devgit checkout dev
  2. 本地创建,提交到远端
    • 本地执行:git branch devgit checkout dev1git push origin dev1

操作步骤

  1. 远端创建dev分支
  2. 本地 git pull origin dev
  3. git branch 查看看不到,直接checkout 到dev分支就可以了
  4. dev分支写代码,本地提交,推送到远端dev
  5. 功能开发完了,普通开发者,提交pr
  6. 管理员点审查,测试通过 ⇢ \dashrightarrow ⇢ 同意合并 ⇢ \dashrightarrow ⇢ dev就合并到master
咱们分支结构

master dev bug

  1. 所有人在dev开发新功能,开发完,提交pr ⇢ \dashrightarrow ⇢ 合并到master ⇢ \dashrightarrow ⇢ 结束
  2. 每个人在自己分支开发,开发完,提交pr ⇢ \dashrightarrow ⇢ 合并到dev ⇢ \dashrightarrow ⇢ 你的功能开发完毕
  3. 管理员自己 提pr ⇢ \dashrightarrow ⇢ dev和master

远程仓库回滚(你不要去做)

  1. 本地回到 初始化的状态(主分支)
    • git reset --hard 版本号
  2. 强制推送到远端
    • git push origin master
    • git push origin master -f 失败

为开源项目贡献代码

  1. fork 开源代码 ⇢ \dashrightarrow ⇢ 你仓库就有这个代码
  2. clone你仓库的代码
  3. 写代码,提交到你仓库
  4. 你仓库,提交pr 你仓库的某个分支 合并到别人的某个分支
  5. 对方审核通过,同意,才ok

git工作流,git pull和git fetch,变基

  1. git 工作流:git flow ⇢ \dashrightarrow ⇢ 分支方案

    • 我们没有采用
    • master dev bug
  2. git pull 和 git fetch

    • git pull 从远程仓库拉取代码:从远程获取最新版本并merge到本地
    • git fetch 从远程仓库拉取代码:会将数据拉取到本地仓库 - 它并不会自动合并或修改当前的工作
    • git pull =git fetch +merge
  3. 变基 rebase

    • 多个提交记录整合成一个
    • 解决多次合并分叉问题
相关推荐
M_emory_18 分钟前
解决 git clone 出现:Failed to connect to 127.0.0.1 port 1080: Connection refused 错误
前端·vue.js·git
Make_magic20 分钟前
Git学习教程(更新中)
大数据·人工智能·git·elasticsearch·计算机视觉
不穿铠甲的穿山甲22 分钟前
git-.git目录解析
git
唔知小罗10 小时前
git config是做什么的?
git
SafePloy安策10 小时前
ES信息防泄漏:策略与实践
大数据·elasticsearch·开源
学编程的小程11 小时前
【安全通信】告别信息泄露:搭建你的开源视频聊天系统briefing
安全·开源·音视频
问道飞鱼11 小时前
【微服务知识】开源RPC框架Dubbo入门介绍
微服务·rpc·开源·dubbo
不是鱼15 小时前
新人程序猿必备的git技能(超实用基础版)
git·github
customer0816 小时前
【开源免费】基于SpringBoot+Vue.JS课程答疑系统(JAVA毕业设计)
java·jvm·vue.js·spring boot·spring cloud·kafka·开源
多客软件佳佳17 小时前
校园交友系统的设计与实现(开源版+三端交付+搭建+售后)
小程序·前端框架·uni-app·开源·php·交友