<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>版本控制 on Tony Bai</title><link>https://tonybai.com/tags/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6/</link><description>Recent content in 版本控制 on Tony Bai</description><generator>Hugo</generator><language>zh-cn</language><copyright>2004-2026 Tony Bai. 版权所有.</copyright><lastBuildDate>Mon, 02 Feb 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://tonybai.com/tags/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6/index.xml" rel="self" type="application/rss+xml"/><item><title>Git 即数据库：Beads (bd) —— 专为 AI Agent 打造的分布式任务追踪引擎</title><link>https://tonybai.com/2026/02/02/beads-bd-distributed-task-tracking-engine-for-ai-agent/</link><pubDate>Mon, 02 Feb 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/02/02/beads-bd-distributed-task-tracking-engine-for-ai-agent/</guid><description>本文永久链接 – https://tonybai.com/2026/02/02/beads-bd-distributed-task-tracking-engine-for-ai-agent 大家好，我是Tony Bai。 在 AI 编码智能体（如 Claude Code、Gemini CLI 等）日益普及的今天，我们面临着一个棘手的工程难题：AI Agent 虽然极其聪明，但它们通常是”健忘”的。...</description></item><item><title>Go 服务自省指南：抛弃 ldflags，让你的二进制文件“开口说话”</title><link>https://tonybai.com/2025/12/31/go-introspection-using-debug-buildinfo/</link><pubDate>Wed, 31 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/31/go-introspection-using-debug-buildinfo/</guid><description>本文永久链接 – https://tonybai.com/2025/12/31/go-introspection-using-debug-buildinfo 大家好，我是Tony Bai。 在微服务和云原生时代，当我们面对线上服务的报警时，第一个问题往往不是“哪里出错了？”，而是——**“现在线上跑的到底是哪个版本？”** 在 Go 的蛮荒时代，我们习惯在 Makefile 里写上一长串 -ldf...</description></item><item><title>无聊的API是最好的API：从系统设计到接口契约的九条法则</title><link>https://tonybai.com/2025/08/29/good-api-design/</link><pubDate>Fri, 29 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/29/good-api-design/</guid><description>本文永久链接 – https://tonybai.com/2025/08/29/good-api-design 大家好，我是Tony Bai。 在解读《Everything I know about good system design》一文时，我们曾提炼出一个核心观点：“无聊即可靠”。这个看似反直觉的法则，在追求创新与复杂的软件工程世界里，如同一股清流。现在，这个“无聊”哲学将从宏观的系统设计，...</description></item><item><title>AI 正在重写“软件工程师”的岗位描述：未来你需要这 6 项核心技能</title><link>https://tonybai.com/2025/07/15/the-agentic-software-engineer/</link><pubDate>Tue, 15 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/15/the-agentic-software-engineer/</guid><description>AI 正在重写“软件工程师”的岗位描述：未来你需要这 6 项核心技能 - Tony Bai Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 我的技术专栏...</description></item><item><title>一个字符引发的30%性能下降：Go值接收者的隐藏成本与优化</title><link>https://tonybai.com/2025/04/25/hidden-costs-of-go-value-receiver/</link><pubDate>Fri, 25 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/25/hidden-costs-of-go-value-receiver/</guid><description>一个字符引发的30%性能下降：Go值接收者的隐藏成本与优化 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关...</description></item><item><title>图解git原理的几个关键概念</title><link>https://tonybai.com/2020/04/07/illustrated-tale-of-git-internal-key-concepts/</link><pubDate>Tue, 07 Apr 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/04/07/illustrated-tale-of-git-internal-key-concepts/</guid><description>git是那个“爱骂人”的Linux之父Linus Torvalds继Linux内核后奉献给全世界程序员的第二个礼物（不能确定已经逐渐老去的Torvalds能否迸发第三春，第三次给我们一个超大惊喜^\_^）。这里再强调一下，git读作**/git/**，而不是**/dʒit/**。 在诞生十余载后(2005年发布第一版)，**git**毫无争议地成为了程序员版本管理工具的首选，它改变了全世界程序员的...</description></item><item><title>Go语言包管理简史</title><link>https://tonybai.com/2019/09/21/brief-history-of-go-package-management/</link><pubDate>Sat, 21 Sep 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/09/21/brief-history-of-go-package-management/</guid><description>包管理是Go一直被诟病做得不好的功能之一。先前版本（go 1.11之前）的主要缺点之一是go get是缺乏对依赖包版本的管理和对可复制构建(reproducible build)的支持。Go社区已经开发了一些包管理器和工具作为版本化包依赖的事实标准解决方案，如glide，dep以及一些辅助工具等。 &amp;gt; “我在生产构建中使用go get。” – 没有人这么说过。 Go语言的包管理实现可追溯到Goog...</description></item><item><title>使用git操作svn仓库</title><link>https://tonybai.com/2019/06/25/using-git-with-svn-repo/</link><pubDate>Tue, 25 Jun 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/06/25/using-git-with-svn-repo/</guid><description>如今，虽然Git已经大行其道，但是仍有很多IT公司和组织依旧在使用集中式的版本控制系统subversion，尤其是一些传统软件公司，他们倾向于集中式的联网开发。如果你是一个Git fans，并且你要是遇到代码仓库依旧是使用subversion进行版本控制的情况，你又该如何施展呢？ 其实git很早就支持与subversion repo的互操作了，2011年我就曾写过一篇《小试git-svn》的博文，...</description></item><item><title>当Bug A遇到Bug B</title><link>https://tonybai.com/2013/10/14/when-bug-a-encounter-bug-b/</link><pubDate>Mon, 14 Oct 2013 00:00:00 +0800</pubDate><guid>https://tonybai.com/2013/10/14/when-bug-a-encounter-bug-b/</guid><description>_2002年的Bug A与2008年的Bug B同时穿越到2013年，并在某个场合相遇了。_ 上周六，项目组本应以一个愉快的心情结束一天的工作的，但一个2002年的Bug A与另外一个2008年的Bug B同时穿越时空来到了2013年，并且恰恰在那时那刻（下班前）相遇了，于是项目组由放松变成了忙碌，由愉快变成了紧张，17：30的下班点也因此延迟到了凌晨1：30。 Bug A来源于2002年我们发布...</description></item><item><title>把所有东西都放入版本控制系统</title><link>https://tonybai.com/2013/09/04/putting-absolutely-everything-in-version-control/</link><pubDate>Wed, 04 Sep 2013 00:00:00 +0800</pubDate><guid>https://tonybai.com/2013/09/04/putting-absolutely-everything-in-version-control/</guid><description>本文翻译自Dr. Dobb’s杂志主编Andrew Binstock的&amp;#34;Putting Absolutely Everything in Version Control&amp;#34;一文。 **持续交付(Continuous Delivery)的一个关键原则就是将所有东西都放入版本控制系统中。这解决了一些重大问题，但也引入了一些其他问题。** 持续交付是持续集成(CI)的一个自然扩展。后者旨在每次代码签入后运...</description></item><item><title>给新手程序员的建议</title><link>https://tonybai.com/2013/07/18/advice-to-a-new-programmer/</link><pubDate>Thu, 18 Jul 2013 00:00:00 +0800</pubDate><guid>https://tonybai.com/2013/07/18/advice-to-a-new-programmer/</guid><description>本文翻译自Dr. Dobb’s杂志主编Andrew Binstock的&amp;#34;Advice to a new programmer&amp;#34;一文**。** **总是有太多的建议摆在新手程序员面前，以致他们难于选择从何处开始。然而，所有这些建议都是建构在下面这五条实践的基础之上的。** 每隔几个月，我就会收到一些勤奋有加的新手程序员的求助，他们希望知道如何才能成为一名真正优秀的程序员。在一些程序员论坛上，我也能看...</description></item><item><title>也谈Commit log</title><link>https://tonybai.com/2013/05/09/also-talk-about-commit-log/</link><pubDate>Thu, 09 May 2013 00:00:00 +0800</pubDate><guid>https://tonybai.com/2013/05/09/also-talk-about-commit-log/</guid><description>在版本控制工具大行其道的今天，作为程序员，势必要每天与各种版本控制系统（比如Subversion、Git、Mercurial等）打交道， 每天不commit几次代码都不好意思说自己是专业程序员^\_^。不过commit代码可不止敲入commit命令这么简单，对于一个专业程序员 来说，我们还要关注每次commit所携带的背景信息，这里暂且称之为“commit context”。在每次commit时，...</description></item><item><title>也谈Go语言代码包分发</title><link>https://tonybai.com/2012/10/25/go-package-distributing/</link><pubDate>Thu, 25 Oct 2012 00:00:00 +0800</pubDate><guid>https://tonybai.com/2012/10/25/go-package-distributing/</guid><description>Go语言目前(截至1.0.2版本)尚不支持直接链接.a文件(这里的.a文件指的不是传统静态共享库，而是对golang的非main包build后的产物)。这样一来Go的第三方库包或组织内部的公共代码库包只能以源码的形式分发了。 Go提供了get命令用于获取他人分发的代码包。我们通过get命令既可以获取一些知名代码托管站点上的代码，也可以获取组织内部版本控制服务器上的公共代码。 Go get支持的托管...</description></item><item><title>把一切都纳入版本控制</title><link>https://tonybai.com/2011/02/18/put-everything-under-version-control/</link><pubDate>Fri, 18 Feb 2011 00:00:00 +0800</pubDate><guid>https://tonybai.com/2011/02/18/put-everything-under-version-control/</guid><description>本文翻译自&amp;#34;Put Everything Under Version Control&amp;#34;，来自于《97 Things Every Programmer Should Know》一书中的某个章节。 把项目中的一切都纳入版本控制。你需要的资源包括：免费的工具，比如Subversion，Git，Mercurial和CVS；充足的磁盘空间；便宜且性能强大的服务器；无处不在的网络；甚至包括项目托管服务。安装好...</description></item><item><title>小试git-svn</title><link>https://tonybai.com/2011/01/20/try-git-svn/</link><pubDate>Thu, 20 Jan 2011 00:00:00 +0800</pubDate><guid>https://tonybai.com/2011/01/20/try-git-svn/</guid><description>部门一直使用Subversion作为源码版本的管理工具。说实话，Subversion比较适合目前部门的绝大多数项目：没有异地团队开发，代码中心化管理；基本上都在trunk上开发，较少使用分支，基本上没有在各个branch间切换的成本。但对于我来说，有些情况下Subversion并不能满足我的需求。 问题主要集中在本地代码的备份和版本管理上。也就是说对于尚未或暂无法提交到Subversion服务器的...</description></item><item><title>做好个人代码备份与版本管理</title><link>https://tonybai.com/2010/09/19/personal-code-backup-and-revision-control/</link><pubDate>Sun, 19 Sep 2010 00:00:00 +0800</pubDate><guid>https://tonybai.com/2010/09/19/personal-code-backup-and-revision-control/</guid><description>今天下午花了一个小时分别和两位同事做了一些代码讨论，这两位同事正在编写的代码都具有一定的试验性质(暂不能进入项目代码库)。这里不谈代码如何如何，而是就我发现的一个问题谈谈我的看法。 问题其实也很简单：那就是两位同事“不约而同”的都没有对这类试验性质的代码进行很好的备份和版本管理。 也许你看到这里会觉得这个芝麻粒儿大的问题不值得一提。没错，可能很多人都不以为然，不过有过以下经历的朋友们也许会与我产生...</description></item><item><title>Advanced CVS</title><link>https://tonybai.com/2004/12/02/advanced-cvs/</link><pubDate>Thu, 02 Dec 2004 00:00:00 +0800</pubDate><guid>https://tonybai.com/2004/12/02/advanced-cvs/</guid><description>做了几个月的实际项目，感觉还是只用到CVS的皮毛，CVS中的高级功能比如create tag、create branch和merge等都未使用过。Dreamhead发过来一本”pragmatic version control-using CVS”，顺便do some practice and research on the advanced functions of CVS。 1、Tags、Br...</description></item></channel></rss>