git显示文件有修改,但是实际上却没有修改(提示File mode changed from 100755 to 100644)
Posted wodongx123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git显示文件有修改,但是实际上却没有修改(提示File mode changed from 100755 to 100644)相关的知识,希望对你有一定的参考价值。
主要原因是因为文件的权限被修改了
git config --global --add core.filemode false
这样就会忽略掉filemode的变更,下次commit的时候就会忽略这一点了。
但是这样做会带来一个问题,就是已经修改过的文件权限无法改回来了。
而我在开发的过程中就因为需要将其改回来而花了很多时间。
步骤如下:
- git config --global --add core.filemode true,先将其改回true
- 找到目标文件的地址,这里我就用app/src/java/com/example/MainActivity.java为例。(假设只有文件权限被改变)
- 将其回退到修改权限前的版本。
git log ,查看commit日志,找到目标版本对应的hash
git reset commitHash app/src/java/com/example/MainActivity.java,将版本改回来。
如果没有执行第一步,这里会提示unstaged,表示没有更改成功 - git add .和git commit,将改回去的文件再提交一次commit,这样在和原文件合并的时候,就不会提示有差异了。
- git config --global --add core.filemode false,改回false。
如果你的项目中有多个这样只改动过权限的文件需要改回来,就把项目的版本回退,再将修改过后的代码贴回去:
- git config --global --add core.filemode true
- git branch -c test ,创建一个新分支,连带着项目的代码
- git log
git reset --hard commitHash ,将整个版本回退 - git config --global --add core.filemode false,改回false。
- git merge test,合并分支,这样就会自动忽略只修改过filemode的文件了。
参考材料
以上是关于git显示文件有修改,但是实际上却没有修改(提示File mode changed from 100755 to 100644)的主要内容,如果未能解决你的问题,请参考以下文章