如何删除文件说从Git的不分阶段的变化“旧模式100755新模式100644”?(How do I

2019-06-18 07:07发布

出于某种原因,当我最初从资料库我的一个Git项目做了拉,我有一吨的文件在已做的没有明显改变我的工作拷贝,但要显示我起来unstaged changes区域。

我使用的是Windows XP上的Git桂,当我去看看文件,看看发生了什么变化。 我看到的是:

old mode 100755  
new mode 100644  

有谁知道这是什么意思?

我怎样才能得到这些文件从我的未分级列表改变的? (很讨厌不得不通过的文件100的,只是挑出我最近编辑的文件和要提交)。

Answer 1:

这看起来像UNIX文件权限模式,以我( 755 = rwxr-xr-x 644 = rw-r--r-- ) -旧的模式包括+ X(可执行文件)的标志,新模式没有。

这msysgit问题的答复表明,为了摆脱这一问题的设置core.filemode为false:

git config core.filemode false


Answer 2:

设置core.filemode假不工作。 但是你要确保在〜/的.gitconfig的设置不会被那些的.git / config中被覆盖。



Answer 3:

我从旧硬盘复制与工作文件的git回购几次,当遇到这个问题。 这个问题源于一个事实,即所有者和权限从旧驱动器/机更改为新的一个茎。 长期和短期的它,运行以下命令来还原事物的本来面目( 感谢这个超级用户答案 ):

sudo chmod -R -x . # remove the executable bit from all files

前者命令实际上解决git的差异报告的差异,但将取消您列出目录的能力,所以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


Answer 4:

看来你已经改变了目录的一些权限。 我做了以下的步骤来恢复它。

$  git diff > backup-diff.txt                ### in case you have some other code changes 

$  git checkout .


Answer 5:

你可以尝试的git的复位 - 硬头回购恢复到预期的默认状态。



Answer 6:

这发生在你拉,所有的文件都是可执行文件在远程存储库。 使他们再次执行将重新设定一切恢复正常。

chmod +x <yourfile> //For one file
chmod +x folder/* // For files in a folder

你可能需要做的:

chmod -x <file> // Removes execute bit

相反,对于没有设置为可执行文件,这是因为上述操作的更改的文件。 有一种更好的方式来做到这一点,但是这仅仅是一个非常快速和肮脏的修复。



Answer 7:

我所面临的同样的问题。 而这挽救我的生命: https://gist.github.com/jtdp/5443498

git diff -p -R --no-color \ | grep -E "^(diff|(old|new) mode)" --color=never \ | git apply



Answer 8:

我刚刚用更改权限一个麻烦的文件。 要回滚个别,我只是手动删除它rm <file> ,然后做一个结账拉一个新的副本。

幸运的是,我还没有上演呢。

如果我有我可以运行git reset -- <file>运行前git checkout -- <file>



Answer 9:

与主版本比较我的分支,当我刚刚碰到了这个问题。 Git的返回一个“模式”错误,当我希望我的分支是相同的掌握。 我固定通过删除文件,然后再次合并主。

首先,我跑了DIFF:

git checkout my-branch
git diff master

这回:

diff --git a/bin/script.sh b/bin/script.sh
old mode 100755
new mode 100644

然后,我跑到下面来解决:

rm bin/script.sh
git merge -X theirs master

在此之后, git diff回到我的分支和主站之间没有差异。



Answer 10:

您可以使用下面的命令来更改文件模式回来。 git add --chmod=+x -- filename然后提交到分支。



文章来源: How do I remove files saying “old mode 100755 new mode 100644” from unstaged changes in Git?
标签: git git-gui