代码之家  ›  专栏  ›  技术社区  ›  Julien M

使用git日志创建推送列表

  •  2
  • Julien M  · 技术社区  · 7 年前

    我最近从svn搬到了git,现在我想知道如何才能做到这一点 生成按推送到存储库的日期排序的提交列表 .
    假设你已经克隆了 原点/主 在给定的日期,有了这个列表,你就可以确切地知道你做出了哪些承诺。

    我读过很多帖子(比如 this this 即使 this )解释git育儿系统。在某种程度上,我认为我可以 git log 连同 -m --first-parent 选项

    然而,从我们现有的合并来看,第一个母公司似乎被混淆了很多次(即,我们有 foxtrot 合并),使其无法遵循 原点/主 .

    我看到Team Foundation Server/VSTS显示了一个推送列表,这正是我想要的。合并将显示来自相应提交的消息。
    他们甚至有一个 API 为此。然而,我希望避免依赖它们来生成我的 推送列表 enter image description here

    1 回复  |  直到 7 年前
        1
  •  1
  •   Community holdenweb    4 年前

    VST在服务器端记录额外的元数据。此元数据在您的本地存储库中不可用。除了标准Git提交数据外,它还记录:

    • Pusher(执行推送的用户的用户帐户)
    • 推的确切时间
    • 以及作为推动的一部分添加到回购中的承诺。

    此信息在您的本地git存储库中不可用。从分布式版本控制的角度来看,依赖这种元数据也有点奇怪,因为它可能在许多不同的时间被推送到许多不同的存储库。它可能已经从一个存储库推送到另一个存储库。

    只有在神圣的存储库设置中(TFS/VSTS服务器在您的设置中扮演的角色),该服务器才能跟踪推送到该服务器的内容。

    因此,您需要依赖TFS/VST提供的RESTAPI。

    至于解开老狐步的合并:

    对于已经存在的foxtrot合并,我该怎么办 感染了我的git回购?没有什么离开他们。除非你是其中之一 反社会的人重写大师。那就发疯吧。 Actually, please don’t.

    但如果你真的想解决这个问题:

    我意外地创建了一个狐步合并,但我没有推动它。怎样 我能修一下吗?您有三种可能的补救措施:

    1. 简单的重新基准:
      enter image description here
    2. 撤消先前的合并以使 起源/掌握第一个父项: enter image description here
    3. 在foxtrot合并后创建第二个合并提交,以保留原始/主第一父关系。 enter image description here

    但是请不要这样做,因为 最后的结果被称为“葡萄牙人战争合并”,以及那些家伙 甚至比狐步合并还要糟糕。

    资料来源: https://developer.atlassian.com/blog/2016/04/stop-foxtrots-now/