【问题标题】:Get commits that have been *created* on a specific branch获取已在特定分支上*创建*的提交
【发布时间】:2015-09-25 15:18:01
【问题描述】:

在这个现实世界中,有没有一种(相对简单的)方法获取release(最左边,用红框标记)分支上的星号 (*) 对应的提交提交历史的例子?

给定的一组提交都是高风险的提交(即公开的提交)。 release(和/或master)分支上只能有两种提交:

  1. 实际版本(通常标记,大合并)
  2. 修补程序(通常是未标记的小合并)

我的目标:我想创建使用这些提交的统计数据和小型分析工具,以帮助我们(尤其是我们的开发人员)更好地了解高风险代码区域和可能的错误模式。我也相信这最终可以用来帮助我们更好地估计公司的风险并评估 QA 效率。

有什么建议吗?

PS:这张图是用git log --oneline --decorate --graph创建的,但是我删掉了里面所有的敏感信息。

【问题讨论】:

  • 您写道:[...] 只获得提交 [...]。您的意思是“获取日志”的相应修订吗?这可能有效:git log --first-parent release.
  • @Jubobs first-parent 太棒了!据我了解,它应该在我们当前的工作环境中工作,但也许我忽略了一些东西。是否有任何可怕的情况会停止工作(考虑到我们继续理智地对待我们的 git,不要重命名分支等)?回答您的问题:获取所有提交哈希的任何方式都可以! :)
  • 好吧,假设您和您的合作者只会将其他分支合并到 release(而不是将release合并到其他分支),@ 987654331@ 应该做你想做的事。如果您只需要提交哈希列表(rev-listlog 的管道类似物),则可以使用 git rev-list --first-parent

标签: git


【解决方案1】:

假设您和您的合作者只会将其他一些分支合并到 release(而不是将release 合并到其他分支),然后

git log --first-parent release

应该给你感兴趣的提交日志,因为

第一个父级是您合并时所在的分支 [...]

(Pro Git Book, 7.1)

如果你只对提交哈希感兴趣,你可以运行

git log --first-parent --pretty="%H" release

相反。但是,在编程设置(脚本等)中,您应该更喜欢rev-list(管道)而不是log(瓷器):

git rev-list --first-parent

【讨论】:

  • 我之前看过“rev-list”与“porcelain”。这是什么意思?
  • 此外,我们当然首先将release 合并到功能和修补程序分支中,然后最终合并回来。在什么情况下会破坏事情,因为到目前为止--first-parent 似乎在这个存储库上按预期工作。
  • @Domi --first-parent 告诉log(或rev-list)在看到合并提交时只关注第一个父项。这是否是您想要的还不清楚;我不确定哪些是您用红色括起来的提交。您可能应该尝试使用该标志,看看是否获得了所需的提交列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 2021-11-01
相关资源
最近更新 更多