我正在使用msysgit在Windows 7上使用git。最近遇到的一个问题是,只要我切换到某些分支,git就会认为一些文件已经被更改,然后我无法停止它认为这些文件已经更改了。
我的问题重现步骤(可能不适用于所有人)如下:
1.检出主分支。 2.检出pristine-3.7分支。 3.检出pristine-3.8分支。 4.检出pristine-3.9分支。
此时,git开始假设有文件已更改。
例如,这里是git diff输出的截图。
以下是相同文件的Beyond Compare十六进制模式下的差异输出。
最后,我们来看一下git status输出!
发生了什么?
问题更新:
一种可能的解决方案是本地提交更改,然后删除该提交,而无需将更改放回工作状态。如何操作?
我的问题重现步骤(可能不适用于所有人)如下:
1.检出主分支。 2.检出pristine-3.7分支。 3.检出pristine-3.8分支。 4.检出pristine-3.9分支。
此时,git开始假设有文件已更改。
例如,这里是git diff输出的截图。
以下是相同文件的Beyond Compare十六进制模式下的差异输出。
最后,我们来看一下git status输出!
发生了什么?
问题更新:
一种可能的解决方案是本地提交更改,然后删除该提交,而无需将更改放回工作状态。如何操作?
git checkout -- filename.x
从存储库中检索“原始”文件。 - Mihai Stancucore.autocrlf
设置、core.filemode
设置等,还有硬重置和还原。唯一能解决问题的是提交这些文件。但我不想这样做(因为我想要这些分支被冻结)。还原/重置没有帮助。我也尝试了rm .git/index
后跟着一个git reset --hard
。 - Umar Farooq Khawajagit checkout 文件名
命令可以在“更改”之前获取旧文件。您是否检查了文件权限?执行git ls-tree HEAD
和git ls-tree abc1234
并进行比较(abc1234 应替换为上一个提交的十六进制值)。 - Michael Tomkins