【问题标题】:Is there a way to see when changes made it into a branch in Git?有没有办法查看更改何时进入 Git 中的分支?
【发布时间】:2018-10-24 08:59:32
【问题描述】:

我希望能够查看文件更改何时进入 Git 分支,即何时推送/合并。 我不想看到本地提交日期或它被推送到我不关心的分支的日期。如果它原本在另一个分支,那么我想知道那个分支是什么时候被合并进来的。

有没有办法在 Git 中查看这些信息?

我需要这个,以便我可以快速查看该分支上某个日期/时间范围内的哪些更改可能导致该分支上的集成测试失败。

【问题讨论】:

  • 我不明白你在找什么。也许你发现了什么here
  • 我不想搜索特定的模式或字符串。我只想看看在日期/时间范围内 Git 分支发生了什么变化。
  • 我认为这也不是我想要的。我相信这会告诉我提交日期。我想知道更改何时被推送或合并到分支中,而不是提交日期。
  • git reflog --date=local branch_name stackoverflow.com/questions/6795070/…

标签: git


【解决方案1】:

那么,您希望看到祖先路径上的合并到其第一个父级不在祖先路径上的提交?

git rev-list --parents --ancestry-path --reverse $commit.. \
| awk BEGIN{seen[$commit]=1}' {seen[$1]=1}
      !seen[$2] {print $1}' \
| git log --no-walk --stdin

这将运行祖先路径最旧的优先,即最旧的提交,您希望的提交首先作为祖先,然后继续前进。 awk 将您想要的提交标记为在启动时已经看到,然后在途中看到的每个提交。任何尚未看到第一个父级的提交都保证是一个仅通过合并历史到达您的提交的合并。

【讨论】:

  • 这看起来确实获得了我想要的信息,但前提是我有一个特定的提交哈希。我想要的是这个结果,但是对于 git log 中的所有提交。编辑:现在我注意到这仍然显示提交日期,而不是推送日期。理想情况下,我想要推送日期。
  • 它显示的是合并的日期,而不是合并的提交。合并是所有合并的提交。 Git 不会保留任何永久推送记录,您可以在接收端查看 reflogs。
  • 是的...看起来 Git 没有针对这种开箱即用的解决方案。我觉得这将是一个非常普遍的需求,以便在使用远程存储库并让 CI 进程定期启动而不是每次提交时对故障进行分类。我确实找到了这个答案,其中包含有关使用 git notes 功能以获得此类信息的详细信息:stackoverflow.com/a/6799031。我还找到了一种在我们自己的 CI 流程中按原样执行此操作的方法,因为我们会为每个 CI 构建自动创建标签。所以这就是我要追求的两条路。感谢您的帮助!
  • 不客气。我不明白为什么在寻找错误时日期很重要,在我的使用中,重要的是提交,所以我怀疑无论你想要做什么,都有更好的方法。你知道git bisect吗?
  • 好的,为此,只需保留对您 CI 的最后一件事的引用,标记它或其他内容,然后查看当前历史记录中上次不存在的所有提交, 不管提交日期或推送日期,因为那不重要,重要的是 ci 是否看到它们,例如git log --oneline --graph --decorate last-ci..master 是美女,git rev-list last-ci..master 是直名单。然后git tag -f last-ci 在您的流程结束时为下一次做好准备。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 2021-07-02
  • 2020-12-09
  • 2011-11-10
  • 2016-11-18
  • 2023-03-05
相关资源
最近更新 更多