出于某种原因,当我最初从资料库我的一个Git项目做了拉,我有一吨的文件在已做的没有明显改变我的工作拷贝,但要显示我起来unstaged changes
区域。
我使用的是Windows XP上的Git桂,当我去看看文件,看看发生了什么变化。 我看到的是:
old mode 100755
new mode 100644
有谁知道这是什么意思?
我怎样才能得到这些文件从我的未分级列表改变的? (很讨厌不得不通过的文件100的,只是挑出我最近编辑的文件和要提交)。
出于某种原因,当我最初从资料库我的一个Git项目做了拉,我有一吨的文件在已做的没有明显改变我的工作拷贝,但要显示我起来unstaged changes
区域。
我使用的是Windows XP上的Git桂,当我去看看文件,看看发生了什么变化。 我看到的是:
old mode 100755
new mode 100644
有谁知道这是什么意思?
我怎样才能得到这些文件从我的未分级列表改变的? (很讨厌不得不通过的文件100的,只是挑出我最近编辑的文件和要提交)。
这看起来像UNIX文件权限模式,以我( 755
= rwxr-xr-x
644
= rw-r--r--
) -旧的模式包括+ X(可执行文件)的标志,新模式没有。
这msysgit问题的答复表明,为了摆脱这一问题的设置core.filemode为false:
git config core.filemode false
设置core.filemode假不工作。 但是你要确保在〜/的.gitconfig的设置不会被那些的.git / config中被覆盖。
我从旧硬盘复制与工作文件的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
看来你已经改变了目录的一些权限。 我做了以下的步骤来恢复它。
$ git diff > backup-diff.txt ### in case you have some other code changes
$ git checkout .
你可以尝试的git的复位 - 硬头回购恢复到预期的默认状态。
这发生在你拉,所有的文件都是可执行文件在远程存储库。 使他们再次执行将重新设定一切恢复正常。
chmod +x <yourfile> //For one file
chmod +x folder/* // For files in a folder
你可能需要做的:
chmod -x <file> // Removes execute bit
相反,对于没有设置为可执行文件,这是因为上述操作的更改的文件。 有一种更好的方式来做到这一点,但是这仅仅是一个非常快速和肮脏的修复。
我所面临的同样的问题。 而这挽救我的生命: https://gist.github.com/jtdp/5443498
git diff -p -R --no-color \ | grep -E "^(diff|(old|new) mode)" --color=never \ | git apply
我刚刚用更改权限一个麻烦的文件。 要回滚个别,我只是手动删除它rm <file>
,然后做一个结账拉一个新的副本。
幸运的是,我还没有上演呢。
如果我有我可以运行git reset -- <file>
运行前git checkout -- <file>
与主版本比较我的分支,当我刚刚碰到了这个问题。 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
回到我的分支和主站之间没有差异。
您可以使用下面的命令来更改文件模式回来。 git add --chmod=+x -- filename
然后提交到分支。