git 告诉我我的文件被更改了,但我看不出有什么不同

标签 git diff tortoisegit

我刚刚安装了最新的 Git (1.9.5),突然它告诉我我的工作树不干净(更改未暂存),但我在我的任何文件中都看不到任何更改任何 diff 工具(我试过 Tortoise 和 Visual Studio 的内置工具)。当我运行 git status 时,它说:

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   inc/i_lab_orders.asp
        modified:   lab_order_list.asp
        modified:   slib/lab_order_lib.asp

但是,Git GUI 的差异工具告诉我所有行都已更改,但我无法发现任何差异。与 git bash 的差异相同。

运行 git reset --hard 根本没有帮助——命令执行没有任何问题,但最后我仍然有相同的“更改”文件。

更新:core.autocrlf 为 false,core.fileMode 也为 false。我还注意到,报告要更改的文件正是上次提交时提交的文件。

我在 Windows 上。

最佳答案

欢迎来到 hell 。祝您住宿愉快:-)

您看不到的区别是行尾。简而言之,您已经告诉 Git 将所有行结尾转换为 Windows 或 Unix,并且存储库中有一个文件在存储库中具有不同的行结尾。

当您 check out 文件时,Git 会进行转换,创建一个看起来正确的本地文件。当你做一个 diff 时,Git 不会转换(因为磁盘上的文件必须是正确的,为什么它会转换已经在 repo 中的东西?)现在你得到了不存在的差异.

解决方案:确保为每个可以 push 的开发人员正确配置 Git,以正确的结尾提交文件一次,并为任何创建带有错误行结尾的文件的人戴上一顶愚蠢的帽子.

相关:

关于git 告诉我我的文件被更改了,但我看不出有什么不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28745636/

相关文章:

python - 如何在 Python 脚本中 stash 个人数据

css - 如何将 `diff`文件创建一个 "common"文件?

python - 在Python中分析列的高度差并选择最大差值

git - 使用 Git 或 TortoiseGit merge 一系列修订

git - TortoiseGit 的 TortoiseSVN 等效命令

Git:如何恢复 2 个顽固地停留在 "Changed but not committed"的文件?

Windows 上的 Git rebase 有时会失败并出现莫名其妙的 "your untracked working tree files would be overwritten"错误

git - 将分支和子分支 merge 回 master

postgresql - postgres 差异工具

gitlab - TortoiseGit 在尝试 lfs 跟踪文件的差异时响应 "/usr/bin/sh: git-lfs: command not found"