2013-05-28 23 views
0

我有一个提交,它在几个文件中删除块,并在单个提交中将它们放入一对新文件中,而不更改或添加行。使用vimdiff手动验证没有更改或添加。Git:识别从另一个文件移动的行

是否有可能使用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 

然而,真正的提交修改不同的内容,并且具有在它之前的悠久历史。

回答

0

你可能需要多个-C看看this discussion关于从最不同的怪样式马虎(和手动;-)

+0

谢谢,但加入了更多-C简直是请求git的邮件列表'git的blame'查看更多的提交,这是我不需要的,因为我只有一个提交,并且当我在输出中看到归因于它的行时,它肯定会被查找。无论如何,我尝试了三个-C,但没有帮助。 – spbnick

相关问题