gpt4 book ai didi

Git 重命名文件。历史记录在 cmd 行上可用,但在 github 界面上不可用?

转载 作者:太空狗 更新时间:2023-10-29 12:54:49 24 4
gpt4 key购买 nike

已经有many excellent posts关于在 Git 中重命名文件和文件夹时如何保留历史记录


这适用于 git 命令行界面:

#if you don't modify oldname.cpp or newname.cpp, git will understand your rename

git mv old.cpp new.cpp
git commit -am "renamed old.cpp -> new.cpp"

git log new.cpp #only shows the new commit
git log --follow new.cpp #shows ALL the history of old.cpp and new.cpp

太好了,--follow 命令允许我们在重命名后获取 new.cpp 的所有历史记录。这在 git 的命令行界面中非常有效。


但是,在 github 网络界面中,old.cpp 的历史记录不会显示 new.cpp。这是一个问题,因为我的许多团队成员将他们的 github 帐户视为简历的一部分。如果他们的提交在重命名文件后没有出现在 github 中,他们就会失去恢复点。在重大文件名/目录重组之后,贡献者最终可能不会在 repo 上进行任何可见的提交。

重命名文件后,如何在 github 网络界面(例如 git log --follow)中显示完整的文件历史记录?

或者我一直坚持不重命名任何东西,除非我愿意临时 github 用户永远不会看到旧的提交?

最佳答案

您可能已经从链接的这三个问题中了解到,Git 中没有任何内容可以跟踪文件移动。对于 Git,它只是一个文件被删除,另一个文件被添加。只有前端根据内容的相似性对文件移动进行一些识别。因此,如果 GitHub 不提供对之前可能已移动的文件的更改跟踪,那么除了请求 GitHub 处理该文件外,您实际上无能为力。

话虽如此,您关于文件移动将使贡献者最终没有可见提交的说法是错误的。是的,如果我查看之前被删除的单个文件的历史记录,那么这看起来可能是这样,但是,正如您现在可能看到的那样,Git 不会忘记存储库中发生的任何事情。存储库的日志仍将包含从给定分支可见的每个提交。这显然还包括在文件移动之前发生的提交(因为 Git 跟踪内容,而不是更改)。您通常可以在 https://github.com/<user>/<project>/commits/<branch> 处获取提交日志.

这里还有一点:日志仅包含那些从给定分支可见的提交。因此,如果您在多个分支上工作,那么整个事情就相当愚蠢了。如果您想了解贡献者在项目上的工作量,您应该使用 https://github.com/<user>/<project>/graphs/contributors 处的项目图表。 .

当然,测量提交计数是 not a good metric无论如何(与 LOC ratio 之类的东西相同)。

关于Git 重命名文件。历史记录在 cmd 行上可用,但在 github 界面上不可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19101554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com