在执行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
,但这只会为当前在文件中的行提供哈希值,而不是为已修改/删除的行提供哈希值
答案 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
。请注意,在我的示例中,您可能会发现当前版本,上次更改该行的版本以及该提交的直接父级之间的行已经大量移动。