click to login
某不知名程序员的网上巢穴。稍安勿躁,正在开发。

让 Git 忽略 Linux 文件模式改变的记录

编写 Linux 服务端程序时,有时候需要在不同的操作系统平台上对同一份代码进行编写编译和同步管理,再通过 Git 仓库对代码进行同步。这样一来,由于编辑文件时的操作系统平台的不同,如 Windows,Linux,Mac OS X 等,会造成一些代码文件状态的改变。这样在通过 git 提交代码的时候,有时虽然代码文件没有做任何的改变,但在提交时的更改列表里,仍旧显示了大量的修改条目:

mode change 100644 => 100755 [文件名]
mode change 100644 => 100755 [文件名]
mode change 100644 => 100755 [文件名]
mode change 100644 => 100755 [文件名]
mode change 100644 => 100755 [文件名]

再通过 git 的 diff 命令查看这些文件的具体不同时,仍没什么额外的信息:

$ git diff [文件名]
old mode 100644
new mode 100755

这样在其他开发者 pull 代码之后查看代码的真正修改部分时增加了很大难度。要解决这个 file mode change 问题,就需要想办法屏蔽掉 git 中对 mode change 的记录。通过查找资料,得知 git 的设置中确实有对 filemode 记录的配置开关。只需要执行如下指令即可:

git config core.filemode false

要全局修改该配置时,需要增加 --global 全局选项参数:

git config --global core.filemode false

官方对于 filemode 的解释:

core.fileMode
If false, the executable bit differences between the index and the working copy are ignored; useful on broken filesystems like FAT. See git-update-index(1). True by default.

如果为 false,索引和工作副本之间的可执行位差异会被忽略。对一些早期的文件系统(如 FAT)是有用的。默认为 true。

参考资料:http://stackoverflow.com/questions/1580596/how-do-i-make-git-ignore-file-mode-chmod-changes

扩展阅读:http://stackoverflow.com/questions/737673/how-to-read-the-mode-field-of-git-ls-trees-output

没有回答

评论:

版权所有 © 2010-2016 小刀志 · 本站基于 WordPress 构建 · 原创内容转载请取得作者同意和授权