2016-11-08 56 views
2

在做git diff,旧线,现在线显示彼此相邻,如:如何获取添加删除行的提交的哈希值?

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

是否有任何命令或参数,这将导致混帐打印的提交的哈希值,其中,删除的行被添加?

例如,如果线路@principal.connections.joins(:contact_infos)在提交foo1234并将在变更为@principal.connections.joins(:node)提交bar1234,然后是有一种方式来获得:

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

git diff当,或其他命令,其将给出一个删除行的列表和他们被添加的哈希值?

最近我来到了git blame但只给出了哈希为目前的文件中被修改的线,而不是那些/删除

回答

2

可以git blame旧版本的文件,通常我使用父提交参考。例如:

$ 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。请注意,正如我的示例中,您可能会发现这些行在当前版本,该行最后一次更改的版本和该提交的直接父项之间有很大的变化。

+0

'你可以使用git blame bar1234并且你关心的行应该用foo1234'标记 - - 不幸的是这似乎并没有发生。当我做'git blame 1234 file.txt'时,我关心的行旁边有'bar1234'而不是'foo1234' –

+0

啊,我错过了魔法'^'!太好了! –

+0

@ClickUpvote:对不起,我的错。我刚刚编辑了我的建议命令。在我的“真实”例子中是正确的。 –