如何获取添加了删除行的提交的哈希值?

时间:2016-11-08 21:04:30

标签: git

在执行git diff时,旧行和现在行显示为彼此相邻,例如:

-    @principal.connections.joins(:contact_infos)
+    @principal.connections.joins(:node)

是否有任何命令或参数会导致git打印添加了删除行的提交的哈希值?

例如,如果在提交@principal.connections.joins(:contact_infos)中添加了行foo1234并在提交@principal.connections.joins(:node)中更改为bar1234,那么有没有办法获得:< / p>

- foo1234   @principal.connections.joins(:contact_infos)
+    @principal.connections.joins(:node)

在执行git diff或其他命令时,会给出已删除行的列表以及添加它们的哈希值吗?

我最近来的是git blame,但这只会为当前在文件中的行提供哈希值,而不是为已修改/删除的行提供哈希值

1 个答案:

答案 0 :(得分:2)

您可以git blame旧版本的文件,通常我使用父提交引用。 E.g:

$ git blame git-mergetool.sh
f8750a0e (Junio C Hamano   2012-08-22 22:33:15 -0700 356)       if test "$merge_keep_backup" = "true"
f8750a0e (Junio C Hamano   2012-08-22 22:33:15 -0700 357)       then
f8750a0e (Junio C Hamano   2012-08-22 22:33:15 -0700 358)               mv -- "$BACKUP" "$MERGED.orig"
f8750a0e (Junio C Hamano   2012-08-22 22:33:15 -0700 359)       else
f8750a0e (Junio C Hamano   2012-08-22 22:33:15 -0700 360)               rm -- "$BACKUP"
f8750a0e (Junio C Hamano   2012-08-22 22:33:15 -0700 361)       fi

然后,如果您使用git show并发现f8750a0e是所有样式修复程序,您可能希望将以前的版本归咎于以前版本:

$ git blame f8750a0e^ git-mergetool.sh
44c36d1c (Charles Bailey   2008-02-21 23:30:02 +0000 276)     if test "$merge_keep_backup" = "true"; then
b3ea27e4 (Charles Bailey   2008-02-21 23:30:34 +0000 277)       mv -- "$BACKUP" "$MERGED.orig"
44c36d1c (Charles Bailey   2008-02-21 23:30:02 +0000 278)     else
44c36d1c (Charles Bailey   2008-02-21 23:30:02 +0000 279)       rm -- "$BACKUP"
44c36d1c (Charles Bailey   2008-02-21 23:30:02 +0000 280)     fi

因此,在您的情况下,您可以使用git blame bar1234^ file,并且您关注的行应标有foo1234。请注意,在我的示例中,您可能会发现当前版本,上次更改该行的版本以及该提交的直接父级之间的行已经大量移动。