当前位置:  开发笔记 > 运维 > 正文

如何从Git中的非分段更改中删除说"旧模式100755新模式100644"的文件?

如何解决《如何从Git中的非分段更改中删除说"旧模式100755新模式100644"的文件?》经验,为你挑选了3个好方法。

出于某种原因,当我最初从存储库中获取我的git项目时,我在工作副本中获得了大量文件,这些文件没有对它们进行任何可识别的更改,但是仍然在我的unstaged changes区域中出现.

我在Windows XP上使用Git Gui,当我去查看文件时看看有什么变化.我只看到:

old mode 100755  
new mode 100644  

有谁知道这意味着什么?

如何从我的未分级更改列表中获取这些文件?(非常讨厌必须通过100个文件,只是挑选我最近编辑过的文件并想要提交).



1> Amber..:

这看起来像我的unix文件权限模式(755= rwxr-xr-x,644= rw-r--r--) - 旧模式包括+ x(可执行)标志,新模式不包括.

这个msysgit问题的回复建议将core.filemode设置为false以解决问题:

git config core.filemode false


+1.这意味着git认为它可以在签出文件上正确设置可执行位,但是当它尝试这样做时它不起作用(或者至少不能以它可以读取的方式).然后,当它读回这些文件的状态时,它看起来像是故意取消设置的可执行位.将core.filemode设置为false会告诉git忽略文件系统上的任何可执行位更改,因此它不会将其视为更改.如果你确实需要进行可执行位更改,则表示你必须手动执行`git update-index --chmod =(+ | - )x `.
我有同样的问题,但它是由于通过SSH git cmd行使用相同的git repro,并通过Windows中的映射驱动器上的Git Extensions!..解决方案是相同的,添加到"config"[core] filemode = false
@robsch您可以使用`git config --global ...`在全局配置文件中设置选项.
如果像我一样,模式更改很重要,可以将core.filemode设置为false,提交实际的代码更改,然后将core.filemode设置为true,git将保留文件更改.
这是救生员,谢谢先生!在公共文件夹上共享克隆的存储库并更改了文件的权限后,我在OSX上发生了这种情况.

2> 小智..:

将core.filemode设置为false确实有效.但是你要确保〜/ .gitconfig中的设置不被.git/config中的设置覆盖.


去过也做过.可悲的是,只有在我自己解决了问题后才发现你的评论.还是,+1!

3> Scott Willek..:

我在使用旧硬盘驱动器中的工作文件复制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


谢谢,对我帮助很大!还应该检查git config core.filemode设置为true,否则将不会检测到权限更改。我还需要在每次更改后刷新git索引以将其选中。
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有