有两台机器,A和B,并且有两个分支,p16和c2。
A具有ext3文件系统,但在B上,归档位于具有vfat的truecrypt驱动器上,装载显示rw、uid=1000、gid=1000、umask=077
A使用sshfs将B的目录树链接到其目录树,然后使用文件系统将A推送到B的p16中。
现在有一些权限问题:
B$ git status
# On branch p16
nothing to commit (working directory clean)
B$ git checkout c2
Switched to branch 'c2'
B$ git checkout p16
error: You have local changes to 'help.txt'; cannot switch branches.git diff现在为我显示了所有文件的更改后的模式:
B$git diff
diff --git a/help.txtt b/help.txt
old mode 100644
new mode 100755
diff --git a/169.txt b/169.txt
old mode 100644
new mode 100755
...
(a list with all files having their mode changed follows)
...我猜问题在于本地文件系统是一个vfat truecrypt容器,并且文件系统不允许另一台机器所期望的权限。
你知道如何更好地将这两台机器与不同的文件系统连接起来吗?
发布于 2011-03-25 05:40:48
如果操作系统的文件权限在该位置无法正常运行,则使用git时可能会出现此类问题。例如,当挂载外部文件系统时。
meagar在他对上述问题的评论中指出了解决方案:
只需确保您(在[core]部分中)有一行
filemode=false在.git/config中,它将告诉git忽略它正在跟踪的文件的可执行文件位。
做同样事情的另一种方法是转到终端中git代码库的根目录,然后输入:
git config core.filemode false请注意,有时需要更改此设置,但在其他情况下,最好保留默认行为。对于git来说,在很多情况下正确跟踪文件权限是很重要的,这样你的项目才能正常工作。
https://stackoverflow.com/questions/5425088
复制相似问题