We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode #428 How old is your Python?

#428 How old is your Python?

2025/4/14
logo of podcast Python Bytes

Python Bytes

AI Deep Dive AI Chapters Transcript
People
B
Brian
Python 开发者和播客主持人,专注于测试和软件开发教育。
M
Michael
帮助医生和高收入专业人士管理财务的金融教育者和播客主持人。
Topics
我总结了Chris Beams关于如何编写优秀Git提交信息的七条规则,包括主题与正文分行、主题行限制字数、使用祈使语气等,并强调说明原因比说明方法更重要。 这篇文章还包含一些额外的技巧,例如如何更好地组织提交信息,以及一些其他文章的链接。 我个人也喜欢在本地保存时使用一些有趣的提交信息,然后在合并到主分支时再编写一个更正式的提交信息。

Deep Dive

Chapters
This chapter explores Chris Beams's seven rules for writing effective Git commit messages. It emphasizes the importance of separating the subject and body, using the imperative mood, and focusing on the 'what' and 'why' rather than the 'how' of code changes.
  • Seven rules for writing great commit messages are presented.
  • Importance of separating subject and body with a blank line.
  • Use of imperative mood in subject line.
  • Focus on 'what' and 'why' instead of 'how' in the body.

Shownotes Transcript

嘿,布莱恩。大家好。嘿。快乐夏天。天气真好。一直在花园里工作。我知道。我也是。我堆了六袋树叶在外面。我只…是的,树叶很多。欢迎来到俄勒冈州。好的。好的。

让我们开始吧。让我们开始节目。大家好,欢迎收听Python Bytes,我们将直接向您的耳机提供Python新闻和头条新闻。这是第428集,录制于2025年4月14日。我是迈克尔·肯尼迪。我是布莱恩·奥肯。本集由Posit和Posit Connect赞助。感谢Posit对节目的支持。稍后我们会详细介绍他们。

如果您喜欢社交,并且想与我们在社交媒体上联系,您可以在mastodon和blue sky.com上这样做。

您可以在pythonbytes.fm/live的YouTube上加入我们。通常在星期一上午10点,今天晚几分钟,但通常都在那个时间段左右。您也可以观看之前的剧集。每个剧集页面都有一个YouTube预告片或海报,您可以点击。最后,如果您想要我们越来越酷的手工制作的摘要,由唯一一位布莱恩·奥肯制作,请加入我们的节目朋友邮件列表,访问网站,点击新闻通讯,注册。人们

越来越多的人写信给布莱恩说他们喜欢这封新闻通讯。太好了。是的,我认为它,我喜欢它。我也喜欢。我很高兴我们正在做这件事。我希望也许其他人可以学习如何编写,更好地编写提交消息。好吧,说实话,我正在尝试,我正在学习,但让我们开始吧。

所以我将介绍克里斯·比姆斯的一些内容,如何编写git提交消息。哦,天哪,我每天可能要写十几个git提交消息,也许吧,从一到十几个。嗯哼。

所以我对如何做得更好很感兴趣。所以顶部有一个XKCD,也就是,你知道的,只是乱码。第一个提交消息是创建主循环和计时控制。非常好。然后到最后,比如最近的一个,就像手一样,只是一些东西。这里有代码,更多代码。啊,我的手正在打字。是的。

其中一件事,这不是文章的一部分,但我喜欢的一件事是能够在我的提交消息中添加一些趣味。当我这样做的时候,当我把它放在一个分支上时,我基本上只是为了本地保存而做的。然后我把它压缩到主分支,然后我真的很想要压缩的提交消息。因为那是唯一会留在那里变得真正好的消息。所以它们真的,当你想要写一个好的提交消息时,这里有一些,这里有一些。我会,有七个技巧,但是,

有七条规则,但我对第一条规则很感兴趣。例如,在顶部,有一个关于你必须向右滚动才能看到它的冗长提交消息的例子。巨大的提交消息。不好。嗯,然后是一些更好、更短的。所以,嗯,我们如何做到这一点?它最终包含了,有像好的信息。好吧,其中一件事我并没有真正,我不知道,我从阅读中了解到的是,嗯,

如果你用一个空行分隔主题和正文,那么,顶行,呃,在许多git工具中,get会将第一个空行之前的所有内容识别为提交消息的标题。所以,呃,在例子中,有一个例子只有一个短行,然后,呃,

一个空行,然后是其余部分,你的日志和所有内容只会显示那一行,除非你点击查看详细信息或其他什么。真的很酷,我不知道它会这样做,所以这很棒。所以用一个空行分隔主题和正文。将主题行限制在50个字符以内。我认为这只是为了保持它,因为我们有时会做80个字符的事情

而且很多字符都用于实际的,比如,比如时间戳之类的东西。或者,哈希,比如哈希的前几位数字。所以我们,我们想为它留一些空间。所以主题是50个字符,主题行大写。不用担心句点,因为你知道,那是你的字符之一。所以不用担心。在主题行中使用祈使语气。如果你不,

如果你不知道或不记得祈使语气是什么,我也不知道。所以我很高兴后面有讨论。文章中对所有这些都有讨论,呃,将正文换行到72个字符。嗯,那是一件我感兴趣的事情,我,我,它,

它只是一个有趣…所以我使用的工具会自动换行,但很多人使用的工具不会。所以要将其存储在大约72个字符中。我只是把它想象成保持行短一些,实际上使用不依赖于换行的换行符。然后最重要的就是第七点。我认为这是最重要的。使用正文解释什么和为什么…

而不是代码,代码更改,你如何更改,所以提交消息,你做了什么,为什么这样做?嗯,我实际上只是关注为什么,我甚至没有真正做太多关于什么的。嗯,所以,

关于提交消息的好信息。我也喜欢,之前有很多人都谈论过这个。所以他参考了一些。它说,记住这一点。所有这些都说过。这些词中的每一个都像这样,并且有,都是指向不同文章的不同链接。所以这是一种有趣的方式来参考其他人的作品。干得好。是的,这真的很令人感兴趣。不久前,我了解到一句话然后是一两段话是额外的信息。我从…

JetBrains的AI在PyCharm中学习到的。真的吗?是的。因为其中一个,它实际上在编写提交消息方面非常好。如果你只是按下AI,总结我做了什么。好的。前提是你正在做的事情是集中的。如果你所做的是,呃,

运行pip compile并更新20个依赖项,然后运行rough并重新格式化它,永远不要点击那个按钮。但是如果你真的做了什么,你知道,这是一个它可以查看并说,不像你,你,你删除了这些位置中的700个空格,然后它就会出来,非常好。它会这样做。它会写一句话,然后它会详细总结它,它所发现的内容。是的。是的。所以非常酷。

就是这样。我不经常使用它。我可能应该多用一些,但有时最终会变成手。只是工作。是的。

通常对我来说,当我最终写出这样的提交消息时,我正在疯狂地尝试修复我刚刚在生产中破坏的东西。我想,哦,我必须把它放回去。拿这个。我只需要你能够再次在服务器上拉取并重试,然后再造成太大的中断。你知道我的意思吗?是的。好吧,我刚刚意识到我还经常做另一件事,如果我喜欢…

如果我提交然后推送所有内容,然后CI由于某种原因而中断,例如因为我忘记了一些东西,例如我添加了一个文件,而我忘记添加并推送它。我会,第二次提交,我会尝试让该消息与第一个消息相同,以便当人们查看时,它会显示为不同的提交,但这会使它很明显,它是同一提交的一部分。它旨在放在一起。是的,这是有道理的。我同意这一点。

这看起来非常有用。酷。谁知道写一句话会这么有趣。好吧,让我们谈谈Caddy。布莱恩,你熟悉Caddy吗?只是Caddy的人。我的意思是,有《Caddy Shack》。那是什么?

是的,但这并不是。这是Caddy,终极服务器,终极Web服务器。所以如果人们正在考虑如何使用Python托管我的Web应用程序,现在有一些方法可以使运行Python代码的东西理论上也可以是与Web浏览器对话的东西。但是通常,当然传统上,那里存在一个有趣的区别。我们有静态Web服务器、代理和防火墙类型的东西。就像

Nginx和其他。然后你有了实际运行你的Python代码的东西,可能扩展到像四个这样的东西在一个Web农场中,使用UVicorn、G-unicorn、micro-whiskey,我们不再使用micro-whiskey了。我们介绍过它,但是,你知道,Gradian,所有这些类型的东西,对吧?所以我想介绍的这个东西,今天我想介绍的这个叫做Caddy的东西,实际上是

Nginx的并行。所以这是弗雷德里克·L·斯托姆给我们带来的。斯托姆,非常感谢你发来这个。但我一直在跟踪它,我也想切换过来,但我的世界太复杂了。我每一行Nginx都有。你必须把一个小配置YAML JSON组合文件放在一起。

我有2200行JSON或任何nginx配置文件。

这是一个问题。我不想尝试移动它。所以它会保留。但是如果我重新开始,我相信我可能会选择Caddy。这是一种创建可以运行的Web应用程序的超级简单的方法。它带有自动内部,无需您操作,通过Let's Encrypt进行HTTPS。例如,您设置了一个网站,您说我的网站是,

michaeldeploys.com或其他什么,并且您没有SSL证书,您启动它。只要它在该域名解析到的服务器上运行,它就会自动为您获取Let's Encrypt证书并保持更新。哦,哇。这真的很酷,对吧?它在GitHub上有63,000颗星。太棒了。是的。

如果您想进行开发,有时您需要HTTPS,它会自动为您创建一个本地受信任的证书。如果您想在localhost上运行,它只会做,即使localhost也是通过HTTPS进行的集群。它有一个小测试。您可以自己尝试一下,例如将您的域名放到这个位置或其他什么地方,然后尝试一下。该。

让我看看我能不能找到配置。配置非常非常简单。我们只需要写几行。如果您曾经使用过PyCharm的HTTP文件,它看起来有点像那样。但是是的,它就像非常简单。你只需要说处理/blog/*,然后你

把细节放在那里。这就是它处理它的方式。但它可以反向代理/API,它实际上会转到另一个服务器,它可以反向代理另一个服务器,它实际上会对另一个服务器集群进行轮询负载均衡。是不是很酷?就像所有这些东西一样。太简单了。

是的,这真的很酷。对我来说它看起来仍然不简单。好吧,尝试另一种方法,对吧?所以人们可以查看这个。我认为它真的很棒。Caddy文件非常易于使用。我刚才在展示什么?我认为,是的。无论如何,有很多不同的例子。有些比其他的更简单,比如这个。

易于运行。是的,但另一件很酷的事情是,如果您来自其他地方,就像我抱怨我拥有所有这些Nginx配置一样,您实际上可以只向它传递一个Nginx配置文件,然后说,我还没有准备好用你的世界Caddy重写它。只是运行这个Nginx配置。但你会成为我们的服务器。所以你可以慢慢迁移到那里。是的。无论如何,你甚至可以使用显然的MySQL数据库。

作为前端Web服务器定义的来源,这听起来有点奇怪,但另一方面,你可以编写代码和API等来控制它,对吧?只需更改数据库,然后更改Web服务器。所以都很酷。无论如何,我认为如果人们正在考虑Engine X或类似的东西,应该考虑一下这个。我不记得它有什么好处。哦,它是用Go编写的。这就是它编写的语言。所以它,你知道的,性能很高。它支持HTTP 1、2和3。所以2是最重要的,但3也很有趣。无论如何,

98% Go。2% HTML。不错。确实。所以如果你曾经有东西要托管,而你没有使用平台即服务,那就行了。酷。说到这里,在我们继续之前,让我们谈谈我们的赞助商,好吗?是的。是的。几周前,布莱恩,你告诉人们关于PositConnect的事情。是的。

我想再次谈谈它,但原因略有不同。所以你谈到了它有多容易使用。我想谈谈如何使用它来分享你的数据科学项目,以及如何使用单点登录等安全地做到这一点。所以本集绝对是由Posit公司的人们带来的。

在Posit。他们对Python进行了巨额投资,最初被称为R商店,制作RStudio和其他。他们一直在为Python人员投入大量精力,当然也投入了大量精力。所以如果像HIPAA、GDPR或

或其他隐私策略之类的词语让你的脖子上的汗毛竖起来,你会知道你需要一个值得信赖的合作伙伴来帮助你的数据变得可共享,但也遵守我们都必须遵守的安全规则。所以PositConnect可以提供帮助。PositConnect允许您安全地开发、部署和共享您使用Python构建的内容。如果您使用Streamlit、Dash、Plotly、Bokeh、FastAPI、Shiny、Flask、Quarto和其他API构建它。这就是它的工作原理。您或您的团队在您的组织内部或VPN后面的云服务器中设置PositConnect

PositConnect,并使用您现有的身份验证系统。然后,当您发布内容时,PositConnect允许您为该内容设置用户级权限,使其对某些用户可见,而对其他用户不可见。但我认为这里更有趣的是,您可以为每个用户设置凭据。

所以想象一下,您编写了代码,然后它与数据库对话,然后访问大量数据。根据谁在这样做,他们可以看到一些数据,但不是所有数据或其他东西等等。不同的团队报告或其他什么。所以在PositConnect中,您实际上可以为每个用户设置他们如何访问其他东西,例如您的数据库、API或外部API或其他什么。这很酷。因此,如果您在一个重视安全性的数据科学团队工作,您应该为您的组织和您自己检查PositConnect。

今天访问pythonbytes.fm/connect,获得三个月的试用期,看看它是否适合您。网址是pythonbytes.fm/connect。链接位于您的播客播放器的节目说明中。是的,我们都知道您可以使用Google AI、Bing或其他什么搜索Posit Connect,但请使用我们的链接,以便他们知道它来自我们。这样他们就会继续支持这个节目。感谢Deposit支持Python Bytes。太棒了。是的。好的,回到你那里。

你的第三个项目是什么?好吧,不是第三个项目,你的第二个项目。我将讨论,让我看看,我将讨论pep。所以我们实际上有一些pep即将到来。这很好,因为我需要一次pep谈话。对不起,请继续。

所以最近刚刚接受的几个pep。所以这些是,其中一个pep用于打包,另一个用于Python 3.14。所以pep七,让我们先讨论打包主题。

pep 770正在使用软件物料清单改进Python包的可测量性,这是一个冗长的说法,但它与s-bombs有关,如果您不了解s-bombs,您可能应该了解一点,嗯,所以这是一件值得阅读的事情,如果您了解s-bombs,它们可能会让您感到压力,嗯,所以我们,这是我们在企业界,很多人正在尝试

思考和SBOM,我可能会把这个定义搞砸,但通常来说,是一种方法,因为我们正在使用许多开源项目和第三方库,并且像Python包不仅仅是Python代码,它也可能包含一些Fortran代码或其他什么,以及一些其他东西,或者Rust,你想尝试跟踪所有这些依赖项。

SBOM系统是一种获得正确方法,以便您可以确保知道所有代码的来源。这,关于如何在Python中做到这一点,有一些不同的想法。这个770来自Seth Larson,由Brett Cannon赞助。

一种真正巧妙的方式来看待,Seth已经研究了我们已经使用打包元数据指定许多这些东西的不同方法。那么我们如何利用它来尝试自动填充许多SBOM字段呢?这只是一些非常棒的工作。所以我很高兴它能实现。同样,因为它属于打包的一部分,所以它并没有真正附加到关系

版本。所以我不确定我们什么时候会得到,我没有查看这是否已经实现,但它已经被接受了。所以,即使我们确实得到了它,我们也会通过工具等获得它。我们不会通过Python版本获得它。所以下一个我,我也有点困惑,但很兴奋的是pep 750模板字符串。所以我们

我们有F字符串。这些就像类固醇上的F字符串。T字符串将替换,当你使用模板字符串时,你不会说F字符串,你会说T字符串。所以它构建,所以例如,如果你有hello name,名称在花括号中,使用F字符串,那将用任何变量填充名称。

但我们希望它只是为了保持这个想法,我们稍后会填写名称。我仍然喜欢,我只是开始接触这个。我真的不知道如何使用这些,但我真的很兴奋,很多东西都被考虑过了。现在有很多作者,Jim Baker,Gwydon Van Rossum,Paul Everett,

呃,另外三个人,Dave,Dave Beck,对不起,Dave Peck。呃,Lisandro的Nicolaou和Caudiano。对于把你的名字搞砸了,我很抱歉。我确定。但是,嗯,很多人都在参与这项工作,呃,

考虑得也很周到,嗯,关于能够组合,呃,他们考虑过像F字符串一样,你可以在上面进行数学运算,或者,你知道的,像添加和连接之类的东西。所有这些都被考虑过了。我们如何处理像,呃,显示它们,呃,使用它们,呃,

整个事情。这将进入Python 3.14或3.14。所以这只是,你知道的,就在眼前。所以我真的很兴奋。在这个版本中会有很多派对笑话。我认为这真的很令人感兴趣。我和Paul谈过几次这个,我知道他从

从Web开发人员的角度来看,他真的很兴奋。所以考虑一下Jinja模板、Django模板、Chameleon模板,诸如此类的东西。是的。但具有更大的灵活性,并且它们由Python运行时本身支持,而不是单独解析和处理它的第三方库。

好吧,这就是我在想的事情。有了这个,你是否需要Jinja模板,或者你可以用这个实现你的东西吗?理论上,我认为你可以用这个来做。我的意思是,我认为它在某种程度上受到了JavaScript库中组件等的启发,在那里你有了你的JavaScript,但是里面有一个字符串,比如一些奇怪的HTML片段,它实际上是…

你将使用的模板,它们只是相互交织在一起,因此它们可以彼此具有更多局部行为。我认为这是这里的动机之一。我相信。是的。我可能必须让Paul和一些其他人在Talk Python上谈论它。是的。我相信我们肯定会有很多关于它的文章。所以我们肯定会更多地讨论它。确实。太棒了。确实。好吧,让我们…

用一点数据科学来总结一下。我们之前谈论过UV吗?外面的人,你们知道UV吗?你们听说过这个吗?这是一个用于管理依赖项和项目的库。实际上,我可能会在我去PyCon时让Charlie Marsh签我的夹克,因为我们谈论它的次数太多了。不,绝对是UV的粉丝。我想谈谈一个相当新的项目

叫做,你想把它读作Juv,J-U-V,但我认为J-U-V可能是说它的方式,因为它基于UV。这是什么,这是一个用于笔记本的工具包,其中它的虚拟环境和依赖项等由UV管理,这很酷。那么你能做什么呢?顺便说一句,这是一个相当新的项目,222颗星。我不知道是什么,你知道的,它只创建过一次。

六个月前,它还不为人所知,但我想要关注它。所以你可以创建、管理和运行Jupyter笔记本及其依赖项,这很酷。您可以使用pep 7, 2, 3内联脚本元数据来固定依赖项,这些依赖项已经被,已经被接受了。一定是正确的。最终的。

您可以为多个前端启动临时会话,例如JupyterLab、Notebook或MB Classic。好的。它完全由UV提供支持。所以很酷。您可以,正如您所预期的那样,UV工具安装JV,或者您可以PIPX安装它。然后一旦你完成了,你就可以说UVX JV,它就会运行。但更重要的是,如果你看看你可以对它做的事情,你可以说像,

JV init some notebook,或者你可以用Python 3初始化一个笔记本,并给它一个名字,这很酷。你可以转到那个笔记本,你可以为它添加pandas和numpy的依赖项。这可不是你通常可以对笔记本做的事情,对吧?或者你可以说,我创建了一个requirements.txt文件,使用UV pip compile固定了版本。然后我可以说点

J-U-V add --requirements,并给它一个完整的requirements文件。所以如果你有很多带有版本等的requirements,你想单独管理。你不必一直输入它们。你还可以做一些有趣的事情,比如

将时间戳添加到你的依赖项中以实现可重复性。我可以说JV stamp这个东西,然后它就不会获取现在之后发布的依赖项,这很酷。我认为,对吧。我不知道还有没有其他类似的东西,比如我只想拥有它,我正在使用的所有东西的最新版本就是现在,这就是我想要的。他们发布了新东西。除非我改变主意,否则我不想拥有它。所以这很酷。但是现在在这里或那里,无论如何,

是的,我知道时区。我会让你想哭。你也可以说run --width,它会运行它们。即使你不想把它们作为特定的依赖项,嗯,你也可以锁定它来创建一个锁文件,对吧?所有类型的UV类型的东西,但你可以让它在那里运行。你也可以说用Jupyter notebook而不是Jupyter lab运行笔记本,并给它一个笔记本,给它一个版本。有很多不同的东西你可以做。所以,呃,

我认为我已经说了足够多了,但是还有很多你可以继续下去的东西。所以对于一个六个月大的项目来说,这是一个相当全面的项目。是的。无论如何,如果你使用笔记本并且你喜欢UV,请考虑看看JUV。它看起来很酷。布莱恩,你还有什么很酷的东西吗?这就是我们主要项目的全部内容。我只有几个额外的东西,我觉得我们已经介绍过这个了,但我记不清了。所以无论如何,我都会继续介绍它。所以,呃…

让我们来看看Python版本的现状。这是在Python开发者指南上,devguide.python.org。我只是,在过去的几个月里,它进行了重新格式化。我认为这是我的记忆。所以,完整的列表在底部,包含所有

所有不同版本以及剩余的内容。我们关于完整图表所看到的是,大多数都已终止生命周期,因为它从26、27、30开始。所以这并不是那么有趣。所以新的格式突出显示了您现在可能关心的内容。所以最后几个生命周期结束,有两个7的生命周期结束,但是3、6、7、8都已终止生命周期。所以希望你不再使用Python 3.8了。

但其中一些有趣的事情,所以这里有一些有趣的事情。因此,重点介绍一下我们目前的状况,所以目前三个九还在获得安全更新,三个、九、十和十一。然后就像现在一样,看起来像是对的,很难分辨蓝线中绿色和黄色的起点在哪里。所以,这里有一些日期,但是有一个链接到,

这里的 endoflife.date/Python。所以我查看了一下,它非常清楚地说明了时间表和我们剩下的时间。所以,呃,3.13,呃,

积极的支持。所以它是在六个月前发布的,而且都是,所以这些相对时间真的很好。它是在六个月前发布的。我们还有1年零5个月的积极支持时间,然后还有4年零6个月的安全更新时间。所以这是,

时间表非常好。这也突出了,所以在第一个图表中,我们只是有绿色和黄色之间的差异。我们有错误修复和安全。这似乎不是什么大不了的事,但是当你用,呃,呃,呃,现实来看,呃,3.12,我最近经常使用,呃,积极的支持在一周前结束。呃,

呃,我们不是正好处于边缘,我们已经过去了,所以3.12的积极支持已经结束,我们仍然有安全支持,所以如果存在安全问题,我们仍然可以获得三年的安全支持,但我们不会获得错误修复之类的东西,小的错误修复不会进入3.12,所以3.13可能是你应该使用的版本

无论如何,我喜欢这两个图表。如果你想帮助说服你的管理层切换到不同的版本之类的事情,这些图表真的很好用。实际上,你在这里链接的第二个图表,endoflife.date/Python,对于这种激励来说非常好。看,我们还剩一年零六个月。

你对此感觉如何?也许我们应该更改一下,如果你调出2.7,它就会说,你在读什么?现在就停下来,回去迁移。然后2.8就说永远不会。不,我只是编造的。不,它应该这么说。我从未做过。哦,好吧。它应该这么说。是的,它应该直接说停下来。你现在在做什么?它包含了所有从3.7及更早版本开始的未受支持版本,都已折叠,例如未受支持的,

走开。是的,你可以展开它,但它是折叠的。但是拥有相对时间真的很好。你还剩下多少时间?是的,我同意。我认为这作为一种思维模型非常强大。是的,无论如何。酷。酷。好吧,让我们继续这个主题,因为我只是想指出3.13.3已经发布了。有些变化对你来说并不重要。哦,如果你使用Mac安装程序,就会发生这种情况。就像,好吧,好吧,我安装了UV,所以下一个。然后Windows有一些东西,比如更新的SSL。

测试已经更新了一点,但是这里有一些安全修复,没有一个是那种要逃跑的事情,但是要避免无界缓冲。这听起来像是你想避免的,等等。你没有看到CVE这个词。你可能很安全,但仍然最好有一个修复。然后是一堆对库的更改,变得更好。是的。

所以最好升级,对吧?最好升级到新的版本。我只需要重建我们的基本Docker容器,UV就会找到新的版本,下载它。然后,所有网站,包括Python Bytes,我都会开始运行。我认为我对TCL TK的更新最兴奋。我知道。好吧,还有一个非常快速的。Siam,呃,

呃,Yala Marty非常感谢你发来这个,因为我认为在评论中有人提到,哦,我们只是对粗略格式使用了.git-blame-ignore-revs,我们不知何故抱怨说,呃,你正在查看差异和基础,尤其是在责备运行粗略格式的人,你说Brian不要在这个上面运行格式,因为你将拥有它,那么你可以做的是创建一个.

git blame ignore revs,可能放上提交的SHA,哈希值,然后它就不会显示出来。它会说,好吧,我们在计算责备时不会考虑这一点。哦,好吧。所以在那个文件中,你可以列出不属于报告的修订版本。现在明白了。是的,他们还指出git blame有一个标志,--ignore-revs。

如果你想传递另一个,那是一个不同的文件。哦,它不是自动的。好吧。或者使用。是的。我想你必须用它。可能吧。是的,也许不是自动的,但是你可以。所以无论如何,是的。

我正在学习这个。这对我来说都是新闻。是的。有趣。酷。确实。感谢你发来这个。这总是值得赞赏的。好吧,让我们用一个笑话来结束这个。Brian,你听说过BC和AD,有时也称为BCE(公元前)和西历,你知道的,所以我们没有负数,因为负数在日历中很难处理。显然我没有,我从未真正想过,为什么我们不能有像负400这样的数字,但无论如何。是的。

BCE。所以我想向你介绍一个不同的日历。这是一个如此重要的纪元,这里有一个不同的东西。有BGPT和AGPT。所以是ChatGPT之前和ChatGPT之后。

所以之前,如果你正在调试一个问题,开发人员可能已经坐了两个小时,努力工作,然后说,哦,好吧,这将如何工作?他们最终认为它可以工作了。然后双手捂脸,六个小时的调试。是的。那是之前。那是BGPT。AGPT是ChatGPT在五分钟内生成代码,24小时调试,甚至更多眼泪。是的,你怎么认为?

是的。好吧,所以24小时,如果你对你的身体很好,每天只工作三到八个小时,那就是三天。所以,是的。看,它节省了你的时间。这就是你如何用它节省时间的方法。是的,到目前为止,我既节省了时间,也浪费了时间。所以,是的,我觉得这更像是氛围编码,而不是像,我向GPT寻求了一些函数方面的帮助。我的意思是,就像,我还没有跳上氛围的潮流。我还没有尝试过。所以试试看。是的。

我也没有。它同时令人惊叹和可怕。但我也没有做过。这就像跳下悬崖。去做吧。它会让你玩一会儿。是的。观众中的Ro问,Stack Overflow步骤在哪里?

哦,是的。是的,那可能在某个地方。你就像,对不起,我离开了你,Stack Overflow。我不会再离开你了。我会回去,也许你可以帮我摆脱困境。可能不会。你也会在那里找到ChatGPT生成的相同答案。好吧,Stack Overflow正在更改他们的名字,对吧?他们将改名为训练数据?训练下溢。好吧。好吧。你知道什么不会浪费你的时间吗?什么?这个节目和我们。以一种好的方式。是的,让我们离开这里吧。

感谢大家收听。Brian,感谢你一直在这里。