出于某种原因,当我最初从存储库中提取一个我的 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