如何msysgit扫描文件以进行真正的更改?
目前它似乎依赖于文件时间戳,因此它会出错:显示没有差异.
我试着git update-index --refresh和git update-index --really-refresh.这两个命令立即退出,似乎不执行树中每个文件的扫描和二进制比较.
来自另一个问题的引用:
设置
core.trustctime为false使git忽略对ctime的虚假更改,这显然发生在某些文件系统上.我需要相反的行为:即使mtime没有改变,也要重新计算文件哈希.
首先,您应该尝试找到问题的根源.Git使用统计信息(不仅是时间戳,还有大小)通常非常可靠.如果您遇到问题,很可能意味着您的系统上存在严重问题.Git不会是唯一被破坏的工具(你的备份系统和你的构建系统也很可能也是如此).
您可以尝试这个(阅读下面的警告后):
rm -f .git/index
git reset HEAD
Run Code Online (Sandbox Code Playgroud)
该rm命令将明显丢弃在索引中的任何信息,那就是:了Git在内部使用,以避免比较文件(你所期望的)的所有统计资料,任何git add,git reset大约是你可能在你的指数未提交未合并的文件的信息.另一方面,这不会改变任何承诺的信息.该git reset HEAD命令将创建一个匹配的新索引HEAD,即在此命令之后,Git认为您没有在索引中暂存更改.
Git会恢复统计信息(即重做整个文件比较)git reset HEAD,所以这是一个告诉Git"现在忘记统计信息"的解决方案,在你破坏你的统计信息后运行,但它不是一种方法告诉Git"再也不要使用统计信息".