代码之家  ›  专栏  ›  技术社区  ›  dangerousdave

历史记录更改时在Git中唯一引用提交

  •  1
  • dangerousdave  · 技术社区  · 14 年前

    我有一个问题,我喜欢引用来自commit消息中的其他提交,这是我使用SHA ID所做的,但我也喜欢不时地更改以前的提交。当我更改提交时,SHA ID会更改,有什么想法吗?是否有其他唯一引用提交的方法?谢谢

    2 回复  |  直到 14 年前
        1
  •  2
  •   Cascabel    14 年前

    没有自动的方法来解决这个问题。您可能想做的是在某个点上完成提交(即,当合并到master并按下时),并在该点确认所有sha1都指向正确的位置。

    一种可以检查自己的方法是grep commit消息以获取sha1(例如。 git log --grep='[0-9a-f]{7} ),并检查给定的SHA1是否表示一个commit,该commit是其消息提到它的commit的祖先。你也可以用钩子开支票。具体哪个钩子取决于您的工作流;我可以看到预提交或后合并是可能的。对于单次提交验证(如预提交),实际上不需要对日志进行grep,只需要对当前提交消息进行grep。对于合并,您需要对正在合并的提交的日志进行grep。

        2
  •  1
  •   svick bala    14 年前

    我认为唯一确定的方法就是使用标签。但是,无论何时要引用提交,创建标记都非常困难。

    可能使用相对引用(比如 ~5 )可以工作,但如果删除、拆分或压缩提交,则此操作将中断。

    另一种可能是引用树的SHA1,而不是提交本身。这样,如果您更改了提交,但没有更改其后面的树,则引用仍然有效。问题是工具不支持这个,我想。