Visual Studio:查看完整的 git 提交历史(包括重命名)
Visual Studio:查看完整的 git 提交历史(包括重命名)
我正在使用Visual Studio 2015和Microsoft Git客户端。在使用该工具时,我遇到了一些在查看历史和注释时的问题,因为Visual Studio似乎无法处理文件重命名的情况。有没有什么好的解决办法?
顺便说一下:我尝试在历史查看器中使用“显示完整历史”工具按钮,但它仍然没有显示包含重命名的历史记录。
以下是我进行测试的步骤:
- 在Visual Studio中,我右键点击文件并选择“查看历史”。(只显示了4个提交)
- 在历史窗口中,我点击了“显示完整历史”-仍然是相同的4个提交。
- 从git命令行中,我运行了git log --follow TheFile.cs(产生了13个提交)
- 在Atlassian Source Tree中,我拉取了文件的日志,并选中了“跟踪重命名文件”的选项。它拉取了与命令行相同的13个提交。
我真正想要的是在Visual Studio中有一个可以匹配的选项。这种可能吗?
问题的出现原因:
Git在确定文件是否被重命名时,通过比较提交的快照来确定文件的变化情况,而不是跟踪两个提交之间的更改。因此,代码仓库的历史记录中没有重命名的信息。相反,这是通过比较原始提交中的文件和后续提交中的文件来计算的。如果它们相似度足够高,Git就会认为这是一次重命名。由于这是一种启发式方法,不能保证一定会被认为是重命名。
问题的解决方法:
Visual Studio和Git for Windows在这方面通常会达成一致。如果它们之间报告的重命名情况不一致,有两种可能性:
1. 这个文件在相似度的边缘上,比如Git认为两个版本之间相似度为61%,因此是重命名,而Visual Studio认为两个版本之间相似度只有59%,因此不是重命名。
2. Visual Studio在计算相似度时存在一些错误。可能是由于空格或行尾符的问题,因为这些问题在Git中经常出现。
如果可以分享这个文件的两个版本,可以通过提交问题或直接发送给相关人员进行进一步调查。
另外,有用户提到通过在Git命令行中使用--follow
选项可以获取到预期的版本。但是Visual Studio没有使用Git命令行,所以可能是重命名检测启发式算法存在差异。猜测可能与行尾符有关。
总之,问题的根本原因是Git和Visual Studio在计算文件重命名时使用了不同的方法,导致在历史记录中显示的重命名情况不一致。可能的解决方法是调查相似度计算的差异或检查重命名检测算法中可能存在的问题。