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

    • 多个提交记录整合成一个
    • 解决多次合并分叉问题
相关推荐
ajassi20002 小时前
开源 C++ QT Widget 开发(十四)多媒体--录音机
linux·c++·qt·开源
咕噜签名分发冰淇淋2 小时前
苹果ios的系统app应用WebClip免签应用开源及方式原理
ios·开源·cocoa
算家计算3 小时前
一张图+一段音频=电影级视频!阿里Wan2.2-S2V-14B本地部署教程:实现丝滑口型同步
人工智能·开源·aigc
非优秀程序员3 小时前
免费宝藏书《MCP 从入门到实践(图文指南版)》速览
人工智能·开源·产品
AI Echoes4 小时前
LLMOps平台:开源项目LMForge = GPTs + Coze
人工智能·python·langchain·开源·agent
灵光通码4 小时前
自然语言处理开源框架全面分析
人工智能·自然语言处理·开源
裸奔的大金毛6 小时前
Tekton - 自定义镜像配置git仓库克隆
git·ci/cd·devops·tekton
CoderJia程序员甲8 小时前
GitHub 热榜项目 - 日榜(2025-09-10)
ai·开源·github·ai编程·github热榜
Adorable老犀牛10 小时前
可遇不可求的自动化运维工具 | 2 | 实施阶段一:基础准备
运维·git·vscode·python·node.js·自动化
SeaTunnel10 小时前
实测有效|用 SeaTunnel 免费实现 MySQL→Oracle 实时同步,步骤超细
数据库·mysql·oracle·开源·seatunnel·数据同步·连接器