Git:识别从另一个文件移动的行

时间:2013-05-28 10:30:09

标签: git blame

我有一个提交,它会从几个文件中删除块,并在一次提交中将它们放入几个新文件中,而无需更改或添加行。使用vimdiff手动验证没有更改或添加。

是否可以使用git找出从哪些文件中移出哪些行以及是否在该提交中添加了新行文件?如果是,那怎么办?

git blame -C file仍然将某些块归因于属于新文件。

例如,在一个目标文件中,在这里再现,有两个块从一个原始文件移动:一个388行,另外30行。在这种情况下,git blame -C file将12个块归属于HEAD中的新文件,其中插入了旧版本中归属于原始文件的块。

简单的综合测试可以产生预期的结果:

git init
xxd -p -cols 32 -len 32000 /dev/urandom > a
git add a
git commit -m 'Add a'
sed -ne '100,487p; 600,629p' a > b
sed -i -e '100,487d; 600,629d' a
git add *
git commit -m 'Move pieces of a to b'
git blame -C b

但是,真正的提交会修改不同的内容,并且在它之前有很长的历史记录。

1 个答案:

答案 0 :(得分:0)

你可能需要更多-C见git邮件列表上的this discussion关于从最好到马虎的不同责任风格(以及手册; - )