出于某种原因,当我最初为我的git项目从存储库中提取时, 我的工作副本中有大量的文件,它们没有明显的更改,但一直出现在我的非阶段性更改区域中。
我在Windows xp上使用Git Gui,当我去看文件,看看有什么改变。 我看到的是:
old mode 100755
new mode 100644
有人知道这是什么意思吗?
如何将这些文件从未分级更改列表中删除?(为了挑出我最近编辑过并想提交的文件,不得不浏览100个文件,这很烦人)。
出于某种原因,当我最初为我的git项目从存储库中提取时, 我的工作副本中有大量的文件,它们没有明显的更改,但一直出现在我的非阶段性更改区域中。
我在Windows xp上使用Git Gui,当我去看文件,看看有什么改变。 我看到的是:
old mode 100755
new mode 100644
有人知道这是什么意思吗?
如何将这些文件从未分级更改列表中删除?(为了挑出我最近编辑过并想提交的文件,不得不浏览100个文件,这很烦人)。
当前回答
我只有一个更改权限的麻烦文件。 为了单独回滚它,我只是用rm <file>手动删除它,然后签出一个新的副本。
幸运的是,我还没有上演。
如果我有,我可以在运行git checkout - <文件>之前运行git reset - <文件>
其他回答
当您在远程存储库中执行所有文件时,就会发生这种情况。使它们重新可执行将使一切恢复正常。
chmod +x <yourfile> //For one file
chmod +x folder/* // For files in a folder
你可能需要做:
chmod -x <file> // Removes execute bit
相反,对于未被设置为可执行文件并且由于上述操作而更改的文件。有一个更好的方法来做到这一点,但这只是一个非常快速和肮脏的修复。
设置的核心。Filemode设为false可以工作,但要确保~/中的设置。Gitconfig不会被.git/config中的那些覆盖。
该解决方案将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
我只有一个更改权限的麻烦文件。 为了单独回滚它,我只是用rm <file>手动删除它,然后签出一个新的副本。
幸运的是,我还没有上演。
如果我有,我可以在运行git checkout - <文件>之前运行git reset - <文件>
这通常发生在回购在Windows和Linux/Unix机器之间克隆时。
只需告诉git忽略文件模式更改。这里有几种方法:
配置仅为当前回购: Git配置核心。filemode假 在全球范围内配置: Git配置——全局核心。filemode假 在~/.gitconfig中添加: (核心) Filemode = false
只要从中选择一个。