当前位置: 首页 > news >正文

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
    • 多个提交记录整合成一个
    • 解决多次合并分叉问题
http://www.lryc.cn/news/197390.html

相关文章:

  • ims-go项目搭建
  • 2022最新版-李宏毅机器学习深度学习课程-P26 Recurrent Neural Network
  • 【Qt控件之QButtonGroup】概述及使用
  • 【开源分享】基于Html开发的房贷计算器,模仿新浪财经
  • ftp文件上传缓慢问题
  • 【周末闲谈】VR新视界,“眼”见未来
  • CSRF和XSS是什么?
  • 【Machine Learning】01-Supervised learning
  • 《视觉 SLAM 十四讲》V2 第 8 讲 视觉里程计2 【如何根据图像 估计 相机运动】【光流 —> 直接法】
  • Unity DOTS System与SystemGroup概述
  • IDEA使用内置database数据库连接mysql报错:javax.net.ssl.SSLHandshakeException
  • 从Flink的Kafka消费者看算子联合列表状态的使用
  • CSS3 按钮
  • STM32 BootLoader设置
  • django REST framework-使用与不使用的区别?
  • 获取URL中的参数
  • 一起学数据结构(9)——二叉树的链式存储及相关功能实现
  • vue 后端返回二进制流-前端通过blob对象下载文件-图片
  • vue el-dialog封装成子组件(组件化)
  • 爬虫教程 一 requests包的使用
  • Aria2NG连接aria2-pro提示认证失败的处理办法
  • MYSQL 连接
  • SeaTunnel 换maven源,解决插件下载慢
  • 安卓14通过“冻结”缓存应用程序腾出CPU,提高性能和内存效率
  • jupyter崩溃OOM,out of memory,jupyter代码写不进去,保存不了。
  • 一文带你快速掌握爬虫开发中的一些高级调试技巧
  • 6.(vue3.x+vite)路由传参query与params区别
  • C++string的使用
  • 闲着也是闲着,自己写歌东西玩一玩,碰碰脑子,简单快乐一点,双人出数的小游戏,后续还带补充
  • 牛客网 -- WY28 跳石板