git显示文件有修改,但是实际上却没有修改(提示File mode changed from 100755 to 100644)

主要原因是因为文件的权限被修改了

git config --global --add core.filemode false

这样就会忽略掉filemode的变更,下次commit的时候就会忽略这一点了。

但是这样做会带来一个问题,就是已经修改过的文件权限无法改回来了。

而我在开发的过程中就因为需要将其改回来而花了很多时间。

步骤如下:

  1. git config --global --add core.filemode true,先将其改回true
  2. 找到目标文件的地址,这里我就用app/src/java/com/example/MainActivity.java为例。(假设只有文件权限被改变)
  3. 将其回退到修改权限前的版本。
    git log ,查看commit日志,找到目标版本对应的hash
    git reset commitHash app/src/java/com/example/MainActivity.java,将版本改回来。
    如果没有执行第一步,这里会提示unstaged,表示没有更改成功
  4. git add .和git commit,将改回去的文件再提交一次commit,这样在和原文件合并的时候,就不会提示有差异了。
  5. git config --global --add core.filemode false,改回false。

如果你的项目中有多个这样只改动过权限的文件需要改回来,就把项目的版本回退,再将修改过后的代码贴回去:

  1. git config --global --add core.filemode true
  2. git branch -c test ,创建一个新分支,连带着项目的代码
  3. git log
    git reset --hard commitHash ,将整个版本回退
  4. git config --global --add core.filemode false,改回false。
  5. git merge test,合并分支,这样就会自动忽略只修改过filemode的文件了。

参考材料

https://stackoverflow.com/questions/1257592/how-do-i-remove-files-saying-old-mode-100755-new-mode-100644-from-unstaged-cha

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值