出于某种原因,当我最初为我的git项目从存储库中提取时, 我的工作副本中有大量的文件,它们没有明显的更改,但一直出现在我的非阶段性更改区域中。
我在Windows xp上使用Git Gui,当我去看文件,看看有什么改变。 我看到的是:
old mode 100755
new mode 100644
有人知道这是什么意思吗?
如何将这些文件从未分级更改列表中删除?(为了挑出我最近编辑过并想提交的文件,不得不浏览100个文件,这很烦人)。
出于某种原因,当我最初为我的git项目从存储库中提取时, 我的工作副本中有大量的文件,它们没有明显的更改,但一直出现在我的非阶段性更改区域中。
我在Windows xp上使用Git Gui,当我去看文件,看看有什么改变。 我看到的是:
old mode 100755
new mode 100644
有人知道这是什么意思吗?
如何将这些文件从未分级更改列表中删除?(为了挑出我最近编辑过并想提交的文件,不得不浏览100个文件,这很烦人)。
当前回答
你可以试试 git重置-硬头 将回购重置为预期的默认状态。
其他回答
这与bkm的发现类似,但它也会考虑任何已删除的文件,并且只在应用更改时给出警告。
这可以很好地恢复上次提交的文件模式设置。
git diff -p --no-ext-diff --no-color --diff-filter=d | grep -E "^(diff|old mode|new mode)" | sed -e "s/^old/NEW/;s/^new/old/;s/^NEW/new/" | git apply
如果有任何删除的文件,上面的许多解决方案都将失效。
这将列出仅被修改而未删除的文件,并将它们全部更改为755
git diff-files --name-only --diff-filter=d | xargs -L 1 chmod 755
该解决方案将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
对我来说,这看起来像unix文件权限模式(755=rwxr-xr-x, 644=rw-r——r——)-旧模式包括+x(可执行)标志,新模式没有。
这个msysgit问题的回复建议设置核心。Filemode为false,以摆脱这个问题:
git config core.filemode false
你可以试试 git重置-硬头 将回购重置为预期的默认状态。