【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

小白程序员必备:精选9大靠谱开源技术栈,轻松入门大模型开发 & 收藏这份实用指南

小白程序员必备:精选9大靠谱开源技术栈,轻松入门大模型开发 & 收藏这份实用指南

构建 AI 智能体应用市面上有很多工具,本文根据我们的实践落地经验,给大家推荐一份经过筛选的靠谱开源技术栈,包括:开发 & 编排框架、记忆、文档理解、计算机控制、语音功能、测试与评估、监控与可观测性、模拟环境、垂直智能体等9个方向,如下图所示: 下文我们详细剖析之。 构建 AI 智能体技术栈 1、构建 AI 智能体的技术栈总览 * 构建和协调 AI 智能体的框架 如果你是从零开始构建 AI 智能体,就从这里入手。这些工具可以帮助你构建 AI 智能体的逻辑结构——何时做什么以及如何处理工具。你可以将其视为核心大脑,将原始语言模型转变为更具自主性的工具。 * 计算机和浏览器使用 一旦你的 AI 智能体能够规划,它就需要行动。这一类别的工具可以让 AI 智能体像人类一样点击按钮、在字段中输入文字、抓取数据以及控制应用程序或网站。 * 语音

By Ne0inhk

GitHub Copilot性能优化实战:如何提升15%的AI代码建议响应速度

GitHub Copilot性能优化实战:如何提升15%的AI代码建议响应速度 【免费下载链接】copilot-codespaces-vscodeDevelop with AI-powered code suggestions using GitHub Copilot and VS Code 项目地址: https://gitcode.com/GitHub_Trending/co/copilot-codespaces-vscode GitHub Copilot作为AI编程助手,在处理复杂代码建议时偶尔会遇到响应延迟问题。通过系统性的性能优化策略,我们成功将AI代码建议的响应速度提升了15%,让开发者享受更流畅的编程体验。 问题根源:为什么Copilot会变慢? 在日常开发中,很多开发者反映Copilot在以下场景中响应速度明显下降: * 大型项目:代码库文件数量超过1000个时 * 复杂语法:使用TypeScript泛型、React Hooks等高级特性 * 多文件上下文:需要分析多个相关文件才能给出准确建议 性能瓶颈主要出现在代码解析和上下文分析阶段,特别是在处理

By Ne0inhk

AI视频生成模型开源实战:从选型到生产环境部署的避坑指南

快速体验 在开始今天关于 AI视频生成模型开源实战:从选型到生产环境部署的避坑指南 的探讨之前,我想先分享一个最近让我觉得很有意思的全栈技术挑战。 我们常说 AI 是未来,但作为开发者,如何将大模型(LLM)真正落地为一个低延迟、可交互的实时系统,而不仅仅是调个 API? 这里有一个非常硬核的动手实验:基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。 从0到1构建生产级别应用,脱离Demo,点击打开 从0打造个人豆包实时通话AI动手实验 AI视频生成模型开源实战:从选型到生产环境部署的避坑指南 根据Gartner最新报告,到2025年将有超过60%的企业在营销、培训等场景采用AI生成视频内容,而开源模型的使用率同比增长达300%。面对如此迅猛的技术需求增长,开发者如何快速构建高可用的视频生成服务?本文将分享从模型选型到生产部署的全流程实战经验。 主流开源框架横向

By Ne0inhk

Snipe-IT开源IT资产管理系统终极指南:从部署到精通

Snipe-IT开源IT资产管理系统终极指南:从部署到精通 【免费下载链接】snipe-itA free open source IT asset/license management system 项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it 在数字化浪潮中,企业IT资产管理面临着设备分散、信息不透明、维护困难等挑战。Snipe-IT作为一款基于Laravel框架开发的开源IT资产与许可证管理系统,为各类组织提供了全生命周期的资产追踪解决方案。本指南将带你深度掌握Snipe-IT的核心功能与最佳实践,助你轻松实现资产管理的数字化转型。🚀 🎯 系统概览与核心价值 Snipe-IT不仅仅是简单的资产登记工具,它通过模块化设计实现了硬件设备、软件许可证、配件耗材的统一管理。系统采用现代化的技术架构,支持Docker容器化部署,具备高可用性和可扩展性。 图:Snipe-IT支持的典型设备类型 - MacBook Pro笔记本电脑 为什么选择Snipe-IT? * 完全开源免费:基于MIT许可证,无任何隐藏费

By Ne0inhk