最近刚好碰到了,所以稍微写一下。

起因

我原来的电脑坏了,所以换了一个电脑。但是由于远端的仓库比较大,所以准备先用 xftp 从虚拟机把里边的仓库下载下来。git pull 后看到也是最新的。

lukaiyi@LAPTOP-73GH1NT7 MINGW64 /c/Project/zddiv3 (dev-3.16)
$ git pull
Already up to date.

但是 git status 的时候,可以看到一大堆 modified 文件:

lukaiyi@LAPTOP-73GH1NT7 MINGW64 /c/Project/zddiv3 (dev-3.16)
$ git status
On branch dev-3.16
Your branch is up to date with 'origin/dev-3.16'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   bin/msgmgr_service/msgmgr_service.rb
        modified:   bin/register_service/public/css/chosen/chosen.css
        modified:   bin/register_service/public/css/common.css
...

git diff 查看的时候,可以看到文件内容并没有改变,只是文件 mode 发生了变化(因为 Linux 和 Windows 文件系统不一样的缘故,导致了拷贝以后文件的权限发生了变化,而这种变化刚好又被 git 捕捉到了)。

lukaiyi@LAPTOP-73GH1NT7 MINGW64 /c/Project/zddiv3 (dev-3.16)
$ git diff
diff --git a/bin/msgmgr_service/msgmgr_service.rb b/bin/msgmgr_service/msgmgr_service.rb
old mode 100755
new mode 100644
...

虽然并没有什么太大影响,但是强迫症受不了。

修复

git config --add core.filemode false
lukaiyi@LAPTOP-73GH1NT7 MINGW64 /c/Project/zddiv3 (dev-3.16)
$ git config --add core.filemode false

lukaiyi@LAPTOP-73GH1NT7 MINGW64 /c/Project/zddiv3 (dev-3.16)
$ git diff

有时候,设置以后,需要重新再进入一下项目目录才生效。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐