惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Spread Privacy
Spread Privacy
T
The Exploit Database - CXSecurity.com
Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy & Cybersecurity Law Blog
L
LINUX DO - 热门话题
T
Threat Research - Cisco Blogs
T
Tenable Blog
TaoSecurity Blog
TaoSecurity Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
AI
AI
P
Proofpoint News Feed
A
About on SuperTechFans
P
Privacy International News Feed
月光博客
月光博客
雷峰网
雷峰网
S
Secure Thoughts
博客园 - 叶小钗
博客园 - 聂微东
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Project Zero
Project Zero
The Cloudflare Blog
SecWiki News
SecWiki News
The Hacker News
The Hacker News
V
Vulnerabilities – Threatpost
罗磊的独立博客
A
Arctic Wolf
阮一峰的网络日志
阮一峰的网络日志
Know Your Adversary
Know Your Adversary
酷 壳 – CoolShell
酷 壳 – CoolShell
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Troy Hunt's Blog
The Last Watchdog
The Last Watchdog
Schneier on Security
Schneier on Security
小众软件
小众软件
有赞技术团队
有赞技术团队
博客园 - 司徒正美
T
Tailwind CSS Blog
量子位
C
Cybersecurity and Infrastructure Security Agency CISA
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
Security @ Cisco Blogs
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
L
Lohrmann on Cybersecurity

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解 【002】HTTPS 粗解:证书、TLS 握手与对后端配置的影响 Hermes Agent 一周暴涨五万 Star,但我劝你别急着追 明明连接的是Redis的DB0,为什么能查到DB3的数据? 【从0到1构建一个ClaudeAgent】协作-Agent团队 熟悉电子元器件之后,电子小白下一步该怎么走? MAF快速入门(23)通过C#类定义Skills .NET 高级开发 | 手写一个对象映射框架 FastAPI数据库ORM怎么选?我肝了三个Demo后,终于不再纠结了 mysqldump 参数拾遗:在遗忘与铭记之间 C# .NET 周刊|2026年3月5期 Claude code入门 - 陈彦斌 一文学习入门 ThingsBoard 开源物联网平台 GitHub 热门项目 | 2026年04月16日 如何为GIT设置全局勾子,为每次提交追加信息 Number.isFinite和isFinite与isNaN()和Number.isNaN的区别 PortSwigger SQL注入LAB2 推荐一个测试人必备的Skills,从功能到性能全搞定(附详细实操和安装下载方式) 筑基期:掌握Odoo基础核心知识点02(Odoo XML 开发方式详解) GLM模型这么火,咱们用vllm也咧一个呗! 深入理解 AbortController:从底层原理到跨语言设计哲学 字符串学习笔记 多租户系统框架的基础模块设计和分析设计 Apache SeaTunnel Zeta 为什么能做到“又快又稳”? AI开发-python-LangGraph框架(3-26-LangGraph基本概念及第一个简单样例) Vue 3 组件通信,别只会用 Props 和 Emits 了,这几个狠活儿你得看看 ElasticSearch7.X版本配置密码 用Manim实现动态交点计算--从一个动点问题说起 团结引擎+Addressable+Instant Game打包抖音小游戏 function call 实战:让 LLM 自动判断 pod 异常、调用日志工具并完成故障分析 bubseek —— 让 Agent 的足迹,变成团队的洞察 通过 C# 读取并导出 PDF 书签 如何用 GitHub Actions 实现 Steam 自动化发布 【从0到1构建一个ClaudeAgent】并发-后台任务 .NET 高级开发 | 定制 ASP.NET Core 框架 电子小白:什么是运算放大器(运放) zero2Agent:面向大厂面试的 Agent 工程教程,从概念到生产的完整学习路线 堆上的ORW HC32F460 USB CDC通信异常:非对齐访问异常排查 20260413-Hyperbridge 攻击事件:发生在默克尔山上的验证绕过 那些喊着AI 要淘汰你的人,正在靠你的焦虑赚大钱! 深度学习进阶(八)Swin Transformer 最小二乘问题详解19:带先验约束的增量式SFM优化与实现 SnapTranslate 3.0 正式发布:全局划词翻译 + 完整英语学习闭环,一站式搞定查词、记词、复习 工作的意义、工作的困难认知再思考 .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 开了 TUN 模式还是直连?90% 的人都踩过这个坑 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术
Git实战覆盖98%日常开发场景
yuyuyui · 2026-05-16 · via 博客园_首页

主要用于分享如何使用可视化工具创建分支,删除,合并、挑拣、剥离、pr,以及一些基本操作,如果您是命令极客,可以忽略。同时这也是做过团队内部技术分享的,完全可以包含企业日常开发98%的Git使用场景,因为我是搞.NET的,所以用VS演示,当然也考虑其他的语言,是用SourceTree来演示。

因为有的图涉及前司,所以用了马赛克,但是不影响观看,如果需要视频,可以评论区留言。

1.创建分支

1.使用vs创建分支

image

1.右下角点击输入分支名称,选择【基于】,如果你想基于哪个分支开分支,开发就选择开发,测试就选择测试,uat就选择uat。

image

2.创建成功后可以看到已经在当前分支

image

2.使用sourceTree创建分支

1.切换到自己所在分支,选择【分支】按钮,在弹出的选择框中输入分支名称,这里比vs好的地方,就是要从哪个分支开就得切换过去,不会选错
image

2.创建完成后,会自动切换到对应分支,和vs不一样此时是没有推送的,要自己手动推送一下

image

2.删除分支

1.使用vs删除分支

1.切换到其他分支,选择需要删除的分支,右键点击删除,这个是直接就删除了
image

2.使用sourceTree删除分支

1.跟vs一样切换到其他分支,右键选择需要删除的分支,点击确定,选择删除,此时删除的是本地,勾选强制删除就是本地远程一起删除了
image

3.合并分支 (merge)

以将dev合并到master为例,首先我们要知道 什么叫合并分支?

通常就是把分支的代码往主干合,对主干的定义,我需要合到master,那此时对于分支来说,master就是主干,我需要合到Dev,那对于分支来说,Dev就是主干

怎么合并分支?

例如我开启了一个分支叫dev1,现在需要把dev1合并到master,那我们的做法是,切换到master分支,然后选择dev1分支,选择合并到当前分支,记住正常流程一定是分支往主干合,不要搞反了

1.使用vs合并分支

1.切换到master分支,右键选择dev1分支右键,在弹出的选项中选择【合并到Current Branch】

image

2.使用sourceTree合并分支

1.切换到master分支,右键选择dev1分支右键,在弹出的选项中选择【合并dev1到当前分支】

image

3.解决冲突

1.已经拉取了最新分支合并冲突,修改了同一个文件

2.没有拉取最新分支合并,说明你的主干代码在最新的后面,此时把分支往主干合并,就会提示

vs 提示

这个时候最好选择,【拉取】,不要选拉取然后推送(因为会拉取自动解决了冲突)他会自动推送了
image

1.点击拉取之后会有冲突
image

2.右键有冲突的文件,选择【合并】,也可以双击直接进到合并界面

  1. 选择合并或者双击默认加载的是3个文件块,分别是【别人的】【你的】【没改之前的】

  2. 选择比较传入项和传入的加载的是2个文件块,分别是【别人的】【你的】

  3. 选择比较当前项加载的是2个文件块,分别是【没改之前的】【你的】

  4. 选择比较传入的项加载的是2个文件块,分别是【没改之前的】【别人的】

默认是下面这样,记住顺序,合并的时候搞清楚

image

然后比较代码,选择合适的代码,不要一股脑的左边,或者右边,或者2边一起选

1.不清楚的没把握的在工作群里发出来,请求协助,不要偷懒,按照自己的理解选择
2.宁可丢自己也不要,弄丢别人的,被人吐槽代码都不会合,还写什么代码?
3.笨笨的方法,先把自己拷贝一份出来,再选择别人的,再把自己的一个一个粘进去

Source 提示

image

选择冲突的文件

image

右边区域有对应的文件信息

1.紫色 = 没改的,红色= 别人的,绿色是你自己的

通常选择冲突文件,右键选择解决冲突,我配置的是Beyond Compare,不要只选择【使用他人】,或者【我的版本】

image

image

没有vs那么强大,可以2边都选,建议步骤,先选右边,然后把左边的粘贴过来

4.销更改

1.回滚提交,但是会创建历史,已经推送的会有,未推送的建议直接reset

4.变基 (rebase)

没特殊要求,不搞这个因为对于新手来说,会搞的团队更加痛不欲生!

5.储藏(剥离)分支代码 (stash )

适用于你写到一半,有人跟你说,切下分支,不知道这个功能的时候,你自己先提交一下,或者copy一份代码,或者重新拉一个仓库?

小砾在dev1认真的写代码,同事让他看下另外一个分支有个bug,比较紧急,这个时候他一部分代码写到一半,直接切分支报错了,如果是你你怎么解决?

1.切换分支代码丢了算了?
2.用笨方法,打个压缩包备份,等下晚上加班,自己一点一点粘过来
3.再拉个仓库
4.......使用储藏-

vs储藏

点击全部提交小三角形,选择全部存储

image

上面修改的就出现在下面了,然后就可以切换其他分支了

image

需要的时候右键存储的选项,选择应用

image

sourceTree储藏

点击【储藏】在弹出的选项框输入一个名字,点击确定

image

需要的时候右键存储的选项,选择应用,就回来了

image

6.挑拣代码 (cherry-pick )

适用于特殊的提交,需要合并到指定分支,缺陷就是必须是单独的提交,如果多次提交就要挑拣多次了

小砾在dev1认真的写代码,同事分配了一个bug给他修复,但是他没有开分支,在dev1上直接提交了,现在那个bug要合到uat了,他又不想再改一遍,又不能直接将分支代码合过去,怎么办?
1.含泪将代码直接copy出来,在粘贴到指定的分支中去,1个还好,100个怎么办?我觉得现在很多人都是这样,我在知道这个东西之前,也是这样。

vs挑拣

1.切换到需要挑拣到的分支,我这里需要将dev1的提交,挑拣到master,窗口选择git,选择管理分支

image

2.在弹出的界面,单击dev1分支,在弹出的历史记录里面找到需要挑拣的提交,右键弹出的菜单,选择【挑拣】

image

3.如果被挑拣的代码和你目标分支有冲突,你依然需要解决冲突,完成挑拣

4.打开master分支,已经存在对应的提交

image

SourceTree 挑拣

1.切换到需要挑拣到的分支,我这里需要将test1的提交,挑拣到master,那就是切换到master

image

2.单击test,在右边出现的提交记录中,选择需要挑拣的提交,右键在弹出的下拉选项中,选择 【遴选】

image

3.有冲突一样解决,就ok

image

7.打补丁(patch)

跟挑拣差不多,但是是把单独的提交弄出来成一个补丁文件,然后应用

1.找到需要打成补丁的提交

image

image

2.生成的补丁文件

image

3.点击工具,选择应用补丁

image

8.打标签 (tag)

有新版发布,或者重要的节点,可以打tag

使用vs打标签

image

1.点击右下角,选择推送标签

image

使用sourceTree打标签

1.切换到目标分支,选择标签

image

2.在标签列表查看,然后推送到远程

image

9.如何PR (pull request)

适用于开了分支保护和一些开源中把分支合并流程化

1.以我们自己的私有git为例,找到合并请求tab

image

2.创建合并请求,选择对应选项,合并到哪里,从谁合过去

image