我有一个提交,它会从几个文件中删除块,并在一次提交中将它们放入几个新文件中,而无需更改或添加行。使用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
但是,真正的提交会修改不同的内容,并且在它之前有很长的历史记录。