出于某种原因,当我最初为我的git项目从存储库中提取时, 我的工作副本中有大量的文件,它们没有明显的更改,但一直出现在我的非阶段性更改区域中。
我在Windows xp上使用Git Gui,当我去看文件,看看有什么改变。 我看到的是:
old mode 100755
new mode 100644
有人知道这是什么意思吗?
如何将这些文件从未分级更改列表中删除?(为了挑出我最近编辑过并想提交的文件,不得不浏览100个文件,这很烦人)。
出于某种原因,当我最初为我的git项目从存储库中提取时, 我的工作副本中有大量的文件,它们没有明显的更改,但一直出现在我的非阶段性更改区域中。
我在Windows xp上使用Git Gui,当我去看文件,看看有什么改变。 我看到的是:
old mode 100755
new mode 100644
有人知道这是什么意思吗?
如何将这些文件从未分级更改列表中删除?(为了挑出我最近编辑过并想提交的文件,不得不浏览100个文件,这很烦人)。
当前回答
对我来说,这看起来像unix文件权限模式(755=rwxr-xr-x, 644=rw-r——r——)-旧模式包括+x(可执行)标志,新模式没有。
这个msysgit问题的回复建议设置核心。Filemode为false,以摆脱这个问题:
git config core.filemode false
其他回答
你可以试试 git重置-硬头 将回购重置为预期的默认状态。
我曾经遇到过这个问题,当从旧硬盘驱动器复制工作文件的git repo几次。该问题源于所有者和权限从旧驱动器/机器更改到新驱动器/机器的事实。简而言之,运行以下命令来解决问题(感谢超级用户的回答):
sudo chmod -R -x . # remove the executable bit from all files
前一个命令将实际解决git diff报告的差异,但将撤销您列出目录的能力,因此ls ./失败,ls: .:权限被拒绝。要解决这个问题:
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
对我来说,这看起来像unix文件权限模式(755=rwxr-xr-x, 644=rw-r——r——)-旧模式包括+x(可执行)标志,新模式没有。
这个msysgit问题的回复建议设置核心。Filemode为false,以摆脱这个问题:
git config core.filemode false
我只有一个更改权限的麻烦文件。 为了单独回滚它,我只是用rm <file>手动删除它,然后签出一个新的副本。
幸运的是,我还没有上演。
如果我有,我可以在运行git checkout - <文件>之前运行git reset - <文件>
设置的核心。Filemode设为false可以工作,但要确保~/中的设置。Gitconfig不会被.git/config中的那些覆盖。