在git仓库中重命名一个文件并保留文件作者?

3
  • 我在代码库中更改了文件名。
  • 该文件的作者是User1
  • 现在,我成为了整个文件(提交)的作者。
  • 如何避免更改文件的真实作者并重新命名文件?

编辑

当我在Github上追溯一个文件时,它显示该文件中所有内容(SLOC代码行数)均由编写,但实际上,我只是更改了该文件的名称。


1
你是不是只是重命名了文件? - Lasse V. Karlsen
我只是把它的名字从 new-file.html 改成了 welcome.html,就这样。 - Naveed Hematmal
那么,不,你无能为力。 - Lasse V. Karlsen
1个回答

3
在Git中,文件没有作者,提交才有作者。
每个提交都包含所有文件,所以如果你进行了提交,那么在那个提交中的每个文件的作者都是你,如果你希望假装文件有作者的话。无论文件是否更改都没有关系。
一些——实际上几乎所有的——Git仓库查看器都有选项告诉你:在提交a123456和提交b789abc之间,这些文件发生了变化。它们通过提取(到临时区域,在内存中真正地)这两个提交——每个提交都有自己单独的作者——然后查看这些提交中的文件是否完全相同,或者是否存在某个文件有一些更改来完成这个任务。
如果查看器说在相邻的提交a123456(父)和b789abc(子)之间,文件new-file.html的名称更改为welcome.html,但没有任何行发生了更改,那么应该将其视为:
- 啊哈:提交b789abc的作者重命名了文件,但我应该继续向前寻找,看看谁实际上编写了该文件。 - 如果你向后查看,可能会发现该文件在提交a123456之前的一堆提交中没有更改,但是在提交对<parent=6abc043,child=badf00d>中,文件的一些发生了更改。这表明提交badf00d的作者是文件中那些的作者。剩下的行需要继续向前查看。
有一个Git命令行命令可以为您完成此操作,称为git blame。它从指定的提交开始(默认为当前提交,称为HEAD),并像Git一样倒退,逐个提交地工作。它查看谁更改了文件的哪些部分,并告诉您何时发生了有趣的事情。大多数提交大多数时间都不会更改大多数文件,这使它们显得不太有趣;git blame将省略提及它们,因为在提交cafedad中,您的文件没有发生任何变化不是有用的信息。

我知道,但有个问题,git blame 应该显示你只改变了文件名,但它却显示你改变了文件内的所有内容。这提高了我的Github洞察分数。 - Naveed Hematmal
1
你可以考虑建议GitHub检查文件重命名并以不同的方式计数。仅向GitHub提出您的特定建议不太可能产生影响,但如果许多人提出类似的建议,GitHub的工作人员将会看到这是一个理想的功能。 - torek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接