出于某种原因,当我最初为我的git项目从存储库中提取时, 我的工作副本中有大量的文件,它们没有明显的更改,但一直出现在我的非阶段性更改区域中。

我在Windows xp上使用Git Gui,当我去看文件,看看有什么改变。 我看到的是:

old mode 100755  
new mode 100644  

有人知道这是什么意思吗?

如何将这些文件从未分级更改列表中删除?(为了挑出我最近编辑过并想提交的文件,不得不浏览100个文件,这很烦人)。


当前回答

我只是在与master区分我的分支时遇到了这个问题。当我期望我的分支与master相同时,Git返回了一个“模式”错误。我通过删除文件,然后合并主在再次修正。

首先我运行差异:

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返回my-branch和master之间没有差异。

其他回答

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

这个msysgit问题的回复建议设置核心。Filemode为false,以摆脱这个问题:

git config core.filemode false

当您在远程存储库中执行所有文件时,就会发生这种情况。使它们重新可执行将使一切恢复正常。

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

你可能需要做:

chmod -x <file> // Removes execute bit

相反,对于未被设置为可执行文件并且由于上述操作而更改的文件。有一个更好的方法来做到这一点,但这只是一个非常快速和肮脏的修复。

该解决方案将git文件权限从100755更改为100644,并将更改推回bitbucket远程回购。

看看你的回购的文件权限:git ls-files——stage 如果100755而你要100644

然后执行如下命令: Git ls-files——stage | sed 's/\t/ /g' | cut -d' ' -f4 | xargs Git update-index——chmod=-x

现在再次检查你的回购文件权限:git ls-files——stage 现在提交您的更改:

吉特状态

Git commit -m“恢复文件权限”

git push

我只是在与master区分我的分支时遇到了这个问题。当我期望我的分支与master相同时,Git返回了一个“模式”错误。我通过删除文件,然后合并主在再次修正。

首先我运行差异:

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返回my-branch和master之间没有差异。

你可以试试 git重置-硬头 将回购重置为预期的默认状态。