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



我有一个提交,它从几个文件中剪切块并将它们放入两个新文件中,而不需要更改或添加行,在单个提交中。使用vimdiff手动验证没有更改或添加。

是否有可能使用git来查找哪些行从哪些文件中移动,以及是否有行添加到该提交的新文件中?如果是,那么是怎么做的?

git blame -C file仍然将一些块属性为属于新文件。

例如,在一个目标文件中,有两个块从一个原始文件移动:一个388行,另一个30行。在这种情况下,git blame -C file在HEAD处将12块属性归给新文件,其中穿插着在旧版本处归给原始文件的块。

一个简单的综合测试产生预期的结果:

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

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

您可能需要更多的- c,请参阅git邮件列表中关于从最佳到草率的不同责备风格的讨论(以及手册;-)

相关内容

  • 没有找到相关文章

最新更新