出于某种原因,当我最初为我的git项目从存储库中提取时, 我的工作副本中有大量的文件,它们没有明显的更改,但一直出现在我的非阶段性更改区域中。
我在Windows xp上使用Git Gui,当我去看文件,看看有什么改变。 我看到的是:
old mode 100755
new mode 100644
有人知道这是什么意思吗?
如何将这些文件从未分级更改列表中删除?(为了挑出我最近编辑过并想提交的文件,不得不浏览100个文件,这很烦人)。
出于某种原因,当我最初为我的git项目从存储库中提取时, 我的工作副本中有大量的文件,它们没有明显的更改,但一直出现在我的非阶段性更改区域中。
我在Windows xp上使用Git Gui,当我去看文件,看看有什么改变。 我看到的是:
old mode 100755
new mode 100644
有人知道这是什么意思吗?
如何将这些文件从未分级更改列表中删除?(为了挑出我最近编辑过并想提交的文件,不得不浏览100个文件,这很烦人)。
当前回答
如果有任何删除的文件,上面的许多解决方案都将失效。
这将列出仅被修改而未删除的文件,并将它们全部更改为755
git diff-files --name-only --diff-filter=d | xargs -L 1 chmod 755
其他回答
您可以使用以下命令将文件模式更改回。 Git添加——chmod=+x——文件名 然后提交到分支。
我也遇到过同样的问题。这救了我的命:
这将把所有权限还原为差异,这样您就什么都没有了,只剩下您对文件所做的更改。
https://gist.github.com/jtdp/5443498
git diff -p -R --no-color \
| grep -E "^(diff|(old|new) mode)" --color=never \
| git apply
详情见https://stackoverflow.com/a/4408378/450383
这通常发生在回购在Windows和Linux/Unix机器之间克隆时。
只需告诉git忽略文件模式更改。这里有几种方法:
配置仅为当前回购: Git配置核心。filemode假 在全球范围内配置: Git配置——全局核心。filemode假 在~/.gitconfig中添加: (核心) Filemode = false
只要从中选择一个。
该解决方案将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之间没有差异。