【Git】分支管理

【Git】分支管理

目录

一、 分支

每次提交,Git都把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀。截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀叫主分⽀,即 master 分⽀。
再来理解⼀下HEAD,HEAD 严格来说不是指向提交,⽽是指向master,master才是指向提交的,所以,HEAD指向的就是当前分⽀。HEAD 也是可以指向其他分支,被 HEAD 指向的分支就是当前正在工作的分支。

二、创建分支git branch [分支名]

我们可以使用git branch 命令查看当前本地的所有分支。

创建第⼀个⾃⼰的分⽀ dev:git branch dev


三、切换分支 git checkout [分支名]

要想切换分支,使⽤ git checkout [分支名] 命令即可完成切换。

看两个分支的commit id是不一样的

切回 dev 看看,又还在。

我们再切回master分支,会发现我们在dev分支做的修改不见了

我们先在当前分支提交修改后的ReadMe文件。

我们在当前分支修改ReadMe文件

造成上面的结果,是因为两个分支执行的提交是不一样的:相当于下图

四、合并分支git merge [分支名]

为了在 master 主分⽀上能看到新的提交,就需要将 dev 分⽀合并到 master 分⽀。使用git merge [分支名]合并操作,合并后就能在master分支上看见修改后的ReadMe了。

现在就相当于:

Fast-forward 代表“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度⾮常快。当然,也不是每次合并都能 Fast-forward。

五、删除分支git branch -d [分支名]

我们在上面完成了合并分支的操作,那么dev分支的使命也就结束了。使用git branch -d [分支名]就可以删除该分支了

但是注意我们不能在该分支目录下,删除不被允许。

六、合并冲突:手动修改

情景:当我们使用本地分支dev修改文件时,master分支同时也在修改该文件。git 就没办法知道保留dev修改的文件还是保留master分支修改的
本地修改:



master分支修改:

合并造成冲突:


ReadMe文件:

此时就需要我们手动看保留哪个代码


再重新add commit 和merge 即可:git log --graph --pretty=oneline --abbrev-commit查看分支合并情况

七、合并模式 --no-ff 强制禁⽤ Fast forward 模式

我们在前面介绍分支合并的时候讲过通过merge提交,git是默认使用 fast forward 直接修改 master指向的方式。

通过fast forward 模式会有删除分支后,查看分支信息的时候没有记录的情况出现,这样就会不知道这串修改到底是合并进来还是一直都在master分支下的。

但是我们在上面面对合并冲突后,我们手动修改在merge就会显示分支信息。Git ⽀持我们使用 --no-ff 强制禁⽤ Fast forward 模式,那么就会在 merge 时⽣成⼀个新的 commit ,这样,从分⽀历史上就可以看出是合并过的。
语法:git merge --no-ff -m "描述" [分支名]

八、分⽀管理策略

master主分支要保持稳定的。

由于很多人都可以在master拉分支,实现自己的开发,所以团队合作的分⽀就像下图一样:

8.1 bug分支 stash命令

情景:假如我们现在正在 dev 分⽀上进⾏开发,开发到⼀半,突然发现 master 分⽀上⾯有 bug,需要解决。在Git中,每个 bug 都可以通过⼀个新的临时分⽀来修复,修复后,合并分⽀,然后将临时分⽀删除。此时 dev 还没开发完,无法提交 的处理场景。

Git 提供了 git stash 命令,可以将当前的⼯作区信息进⾏储藏,被储藏的内容可以在将来某个时间恢复出来。

我们使用了stash 命令之后,我们就可以在master分支上创建分支修改bug,修改完成后提交即可。那我们如何继续 dev 的开发工作呢?可以看到我们直接切回去后,是没有当时还没写完的代码的。

git stash pop 命令恢复工作区代码


另外,恢复现场也可以采⽤ git stash apply 恢复,但是恢复后,stash内容并不删除,你需要⽤ git stash drop 来删除;
你可以多次stash,恢复的时候,先⽤ git stash list 查看,然后恢复指定的stash,⽤命令git stash apply stash@{0}

当我们写完dev分支代码后,跟master合并,master在前面跟修改bug的分支合并了,此时就可能导致dev和master合并冲突,那我们此时去手动修改冲突,有可能又出现bug。

解决方法:
在⾃⼰的分⽀上合并下 master ,再让 master 去合并dev ,这样做的⽬的是有冲突可以在本地分⽀解决并进⾏测试,⽽不影响 master 。

8.2 强制删除分支 git branch -D [分支名]

情景:当我们开发的这个分支代码突然不需要了。我们要删除已经 commit 的分支,就要使用 git branch -D [分支名]删除。

Read more

AutoGPT+Python:让AI智能体自动完成复杂任务的终极指南

AutoGPT+Python:让AI智能体自动完成复杂任务的终极指南

AutoGPT+Python:让AI智能体自动完成复杂任务的终极指南 引言:在人工智能迈向自主化的新阶段,AutoGPT作为基于大语言模型(LLM)的自主智能体代表,正掀起一场让AI自己思考、自主执行的技术革命。当它遇上Python的全栈生态与极致灵活性,开发者不再只是调用AI接口,而是能深度定制专属智能体——让AI听懂自然语言、拆解复杂目标、调用外部工具、联网检索信息、迭代优化结果,独立完成从市场调研、内容创作、代码开发到自动化运维的全流程任务。 本文从核心原理、本地部署、Python实战、插件扩展、生产优化五大维度,手把手带你从0到1搭建可落地、可监控、可进化的AI智能体系统,不管是AI爱好者、全栈开发者还是创业者,都能靠这份指南,掌握下一代人机协作的核心生产力。 一、先搞懂:AutoGPT到底是什么? 传统ChatGPT类模型是被动应答,你问一句它答一句,需要人工一步步引导;而AutoGPT是自主智能体,你只给它一个最终目标,它就能自己完成: * 任务拆解:把复杂目标拆成可执行子步骤 * 自主决策:判断下一步该做什么、调用什么工具 * 记忆管理:短期记忆存上下文

By Ne0inhk
mac电脑开发嵌入式基于Clion(stm32CubeMX)

mac电脑开发嵌入式基于Clion(stm32CubeMX)

电气学生在备赛时期,一定是要接触到入门的嵌入式开发,无论是电赛还是嵌赛,但是市面上大多教程都是基于keil来开发芯片,没mac版本,而B站的STM32课程会使用到STM32CubeIDE这一软件,但是作为一个软件开发者习惯了mac环境下idea,xcode这些优秀IDE,在用keil或者STM32CubeIDE(确实很方便好用,但是Clion会有更优的地方)的时候难免会有点不习惯,于是我在网上找了一些教程,找到了使用Clion来搭载单片机环境开发的方法 一、Clion下载 这个在本人第一篇mac系列博客中能找到,请移步一下看看,这里不进行赘述: mac用户怎么把代码上传到Gitee(基于Clion)-ZEEKLOG博客 二、 STM32系列软件下载 1.STM32CubeMX 是 STMicroelectronics 提供的一款图形化配置工具,旨在帮助开发人员更高效地完成 STM32 微控制器的初始化和外设配置工作。能够大大提高我们对于单片机开发的效率,但只限于STM32系列芯片  STM32CubeMX:https://www.st.com/zh/developmen

By Ne0inhk
Flutter 组件 zxcvbnm 的适配 鸿蒙Harmony 实战 - 驾驭极致密码强度评估、实现鸿蒙端金融级账户准入安全与人性化安全感知的深度方案

Flutter 组件 zxcvbnm 的适配 鸿蒙Harmony 实战 - 驾驭极致密码强度评估、实现鸿蒙端金融级账户准入安全与人性化安全感知的深度方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 zxcvbnm 的适配 鸿蒙Harmony 实战 - 驾驭极致密码强度评估、实现鸿蒙端金融级账户准入安全与人性化安全感知的深度方案 前言 在鸿蒙(OpenHarmony)构建的全场景安全体系中,“账号安全”是所有隐私防护的起点。我们绝大多数开发者在处理用户注册时,依然采用 length > 6 这种极其原始的校验逻辑。殊不知,像 password123 这种符合长度规则的密码,在现代暴力破解算法面前几乎是瞬间沦陷。 如何让你的鸿蒙 App 具备一眼识破“弱密码”的火眼金睛?如何在高频率交互的注册界面实现秒级的安全评级? zxcvbnm 是一款基于波斯纳算法(zxcvbn)的高性能 Dart 实现。它不是简单的正则匹配,而是扫描字典、日期、序列乃至常用键盘模式,给出一个 0 到

By Ne0inhk
Flutter for OpenHarmony: Flutter 三方库 fuzzywuzzy 为鸿蒙应用提供智能模糊搜索与文本匹配能力(交互体验升级助手)

Flutter for OpenHarmony: Flutter 三方库 fuzzywuzzy 为鸿蒙应用提供智能模糊搜索与文本匹配能力(交互体验升级助手)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在进行 OpenHarmony 的应用搜索、通讯录查找或配置过滤功能开发时,用户经常会遇到拼写错误或输入不完整的尴尬。例如:用户想搜“HarmonyOS”,却输入了“Hrmny”。 1. 简单的 String.contains() 或 exact match 无法满足这种容错需求。 2. 如何在海量数据中根据“相似度”进行排序展示? fuzzywuzzy 软件包基于著名的 Levenshtein Distance(编辑距离)算法,为鸿蒙开发者提供了一套简单、高效的模糊文本匹配方案。它能通过计算字符间的变换代价,为输入结果打分,让你的鸿蒙应用瞬间具备“懂用户心声”的灵气。 一、文本相似度算法模型 fuzzywuzzy 计算两个字符串从 A 变换到 B 需要的最小操作步骤。 用户输入:

By Ne0inhk