出于某种原因,当我最初从存储库中获取我的git项目时,我在工作副本中获得了大量文件,这些文件没有对它们进行任何可识别的更改,但是仍然在我的unstaged changes
区域中出现.
我在Windows XP上使用Git Gui,当我去查看文件时看看有什么变化.我只看到:
old mode 100755 new mode 100644
有谁知道这意味着什么?
如何从我的未分级更改列表中获取这些文件?(非常讨厌必须通过100个文件,只是挑选我最近编辑过的文件并想要提交).
这看起来像我的unix文件权限模式(755
= rwxr-xr-x
,644
= rw-r--r--
) - 旧模式包括+ x(可执行)标志,新模式不包括.
这个msysgit问题的回复建议将core.filemode设置为false以解决问题:
git config core.filemode false
将core.filemode设置为false确实有效.但是你要确保〜/ .gitconfig中的设置不被.git/config中的设置覆盖.
我在使用旧硬盘驱动器中的工作文件复制git repo时遇到了这个问题.问题源于所有者和权限从旧驱动器/机器更改为新驱动器/机器的事实.它的长短是运行以下命令来理顺(感谢超级用户的回答):
sudo chmod -R -x . # remove the executable bit from all files
前一个命令实际上将解决git diff报告的差异,但会撤销列出目录的能力,因此ls ./
失败了ls: .: Permission denied
.解决这个问题:
sudo chmod -R +X . # add the executable bit only for directories
坏消息是,如果你确实有任何想要保存可执行文件的文件,比如.sh
脚本,你需要还原那些文件.您可以使用以下命令为每个文件执行此操作:
chmod +x ./build.sh # where build.sh is the file you want to make executable again