如何通过保留作者来复制行



我有一个有很多行的文件,想通过将其拆分到多个文件中来重构它。通过简单地复制/粘贴,我将在git blame时丢失已提交行及其作者的历史记录。有没有办法复制/粘贴这些行并保留其作者?

Git 不记录特定代码行的作者(或提交者(。

Git 所做的——它所做的一切——是记录一个完整的快照,并与一组元数据配对:作者姓名/电子邮件/日期、提交者姓名/电子邮件/日期、父提交。

各种工具,如git loggit showgit diffgit annotate(或git blame(,以各种方式使用记录的数据。 特别是git blame代码会将每个提交与其父提交进行比较。 如果在此特定提交中添加或更改了某些行,它将把提交的作者分配给整行并报告结果。

这意味着很容易让工具将一组特定的更改行分配给某个特定的作者:将该名称设置为作者进行提交。

这也意味着很容易意外更改文件的每一行(例如,通过将行终止符从仅 LF 更改为 CRLF,反之亦然(并"获取该文件每一行的作者身份"。 但所有这些都意味着当你使用git blame,您需要知道如何使用该工具:您需要了解其局限性。

有些人——我自己也包括在这个小组中——会争辩说,如果你移动代码进行重构,你应该"拥有"移动的行。 原作者可能已经编写了原始代码,但不是以这种形式编写的。 例如,行for i in expr在两个不同的函数和/或文件中意味着非常不同的东西。 如果你移动一个足够大的块,也许代码保留了它的"真正含义",并且......也许不是。 Git 会将原始行的原始作者保留在原始位置,任何了解git blame的人都不会只查看新的重构代码,而是继续跟踪代码回顾历史以找到其原始作者,预重构。

不过,如果你想拆分"作者"和"提交者",Git 给你一种(每次提交(的方式来做到这一点。

相关内容

  • 没有找到相关文章

最新更新