sol*_*les 8 git version-control github
在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
Run Code Online (Sandbox Code Playgroud)
太棒了,所以这个--follow命令允许我们new.cpp在重命名之后获得所有的历史记录.这在git的命令行界面中效果很好.
但是,在github web界面中,历史old.cpp并未显示出来new.cpp.这是一个问题,因为我的许多团队成员都将他们的github帐户视为简历的一部分.如果他们的提交在重命名文件后没有出现在github中,那么他们就会失去恢复点.在主要文件名/目录重构之后,贡献者最终可能没有在repo上进行单个可见提交.
git log --follow在重命名文件后,如何在github Web界面(例如)中显示完整的文件历史记录?
或者我不会重命名任何东西,除非我愿意让偶然的github用户永远不会看到旧的提交?
正如您可能从链接的这三个问题中了解到的那样,Git 中没有任何内容可以跟踪文件移动。对于 Git 来说,这只是删除一个文件,然后添加另一个文件。只有前端根据内容的相似性对文件移动进行一些识别。因此,如果 GitHub 不提供对之前可能已移动的文件的更改的跟踪,那么除了要求 GitHub 进行处理之外,您实际上无能为力。
\n\n话虽如此,您关于文件移动将使贡献者最终没有可见提交的说法是错误的。是的,如果我查看之前删除的单个文件的历史记录,那么看起来可能就是这样,但是,正如您现在可能的那样,Git 不会忘记存储库中发生的事情。并且存储库的日志仍将包含从给定分支可见的每个\xe2\x80\x99s提交。这显然还包括在文件移动之前发生的提交(因为 Git 跟踪内容,而不是更改)。您通常可以在 获取提交日志https://github.com/<user>/<project>/commits/<branch>。
还有一点:日志仅包含那些从给定分支可见的提交。因此,如果您在多个分支上工作,那么整个事情无论如何都是相当愚蠢的。如果您想了解贡献者在项目上的工作量,您应该使用 中的项目图表https://github.com/<user>/<project>/graphs/contributors。
但当然,衡量提交计数无论如何都不是一个好的指标(与LOC 比率之类的东西相同)。
\n| 归档时间: |
|
| 查看次数: |
3532 次 |
| 最近记录: |