我想将一个大文件的部分内容提取出来,保存git历史记录,这样我就能运行git blame
,像重构之前一样查看更改记录。
我想将一个大文件的部分内容提取出来,保存git历史记录,这样我就能运行git blame
,像重构之前一样查看更改记录。
git blame
中使用一个-C
。如果复制的代码来自未修改的文件,则应使用-C -C
。如果您认为某些代码已被删除多个修订版本,然后被恢复,并且您想找到原始来源,则使用三个-C
。请注意,git blame
的-C
选项打开了git blame
的-M
选项,后者检测移动代码(因此与git diff
的-M
选项非常不同-文件重命名检测,例如git log --follow
,3总是启用)。
1这是Git相对于其他VCS的一个很好的优势,因为Git可以检测到人类遗忘的情况,并且还可以在比较“远离”修订时检测重命名。这对Git来说是一个可怕的劣势,因为它必须检测即使人类不会忘记的情况,因此错过了重命名。这对于Git来说是一个巨大的优势,因为未来更智能的算法以更好的方式使用现有数据。简而言之,这是更好和更糟的原因,但最终它只是不同。
2对于git diff
,您可以使用其-B
选项有条件地分开这些自动配对的“相同名称表示相同文件”配对。对于不执行此类配对的git blame
,这是不可用的,也不必要。
3在git log
中启用--follow
的代码是一种可怕的hack,基本上仅适用于git blame
所需的一个案例。不要尝试在反向顺序的git log
中使用--follow
。
git blame
信息呢? - valkgit blame
找到代码移动。如果没有找到,请尝试较低的-M
和/或-C
值。如果这些都不起作用,您可以尝试编写新的算法来进行git blame
... - torek