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