我不确定我的git存储库发生了什么,但是有两天,每次我提交它都会开始随机删除文件,然后因为冲突等而不让我合并。
我现在已经将应用程序恢复到可用状态,我想我会删除.git文件并运行git init
来创建新的git。
当我这样做时,我得到了
git init fatal: cannot copy '/usr/share/git-core/templates/hooks/commit-msg.sample' to '/media/sf_Ruby192/myapp/.git/hooks/commit-msg.sample': Operation not permitted
--------------- LS -al
的更新这是在Windows主机上的虚拟机ubuntu中运行的。奇怪的是,这已经运行了大约7个月没有问题,然后突然GIT开始删除文件,我认为我的.git已损坏试图重新构建它并遇到所有这些问题。
total 62 drwxrwx--- 1 root vboxsf 4096 2012-03-16 15:03 . drwxrwx--- 1 root vboxsf 8192 2012-03-15 13:29 .. drwxrwx--- 1 root vboxsf 4096 2012-02-20 06:43 app drwxrwx--- 1 root vboxsf 4096 2012-03-16 09:45 config -rwxrwx--- 1 root vboxsf 161 2011-12-27 05:31 config.ru drwxrwx--- 1 root vboxsf 4096 2012-03-08 09:58 db drwxrwx--- 1 root vboxsf 0 2011-12-27 05:31 doc -rwxrwx--- 1 root vboxsf 1369 2012-02-27 07:23 Gemfile -rwxrwx--- 1 root vboxsf 4374 2012-02-27 07:24 Gemfile.lock -rwxrwx--- 1 root vboxsf 86 2012-02-22 13:21 .gitignore drwxrwx--- 1 root vboxsf 0 2012-02-20 06:43 lib drwxrwx--- 1 root vboxsf 4096 2012-02-22 08:50 log drwxrwx--- 1 root vboxsf 4096 2012-03-18 09:02 public -rwxrwx--- 1 root vboxsf 274 2011-12-27 05:31 Rakefile -rwxrwx--- 1 root vboxsf 9386 2011-12-27 05:31 README drwxrwx--- 1 root vboxsf 0 2012-02-27 07:16 redis drwxrwx--- 1 root vboxsf 4096 2011-12-27 05:31 s drwxrwx--- 1 root vboxsf 0 2011-12-27 05:31 script drwxrwx--- 1 root vboxsf 0 2011-12-27 05:31 solr -rwxrwx--- 1 root vboxsf 4 2012-02-20 06:43 sunspot-solr.pid drwxrwx--- 1 root vboxsf 4096 2011-12-27 05:31 test drwxrwx--- 1 root vboxsf 4096 2011-12-27 05:31 thin drwxrwx--- 1 root vboxsf 0 2011-10-09 09:23 tmp drwxrwx--- 1 root vboxsf 0 2011-12-27 05:31 vendor
------------------ UPDATE ---------------------------- -
通过Brian推荐的步骤,有一个.git
目录(我是新目录,在运行初始git init
之前已重命名。当我执行ls -l .git
时,我得到了
ls cannot access .git: No such file or directory
但是,我可以进入.git文件夹,但也无法从.git内部运行-ls
ls cannot access directory: Operation not permitted
关于如何摆脱这个洞的任何建议??
答案 0 :(得分:1)
要调试权限问题,检查相关文件的权限通常很有用:源文件,目标文件和目标目录。
尝试使用ls -l /usr/share/git-core/templates/hooks/commit-msg.sample
来确定commit-msg.sample模板的权限;如果您没有读取权限,那么您将无法读取它(git init
将几个模板文件复制到您的git存储库中;如果它无法读取源文件,您将收到错误)
接下来,尝试签出目标文件的权限。从项目目录中,运行ls -al
。检查.
(当前目录)的权限。你有.
的写权限吗?是否已有.git
目录?你有写作许可吗?如果已有.git
目录,则在其中执行ls -l
。是否已有hooks
目录?你有写作许可吗?最后,看看如果手动尝试将/usr/share/git-core/templates/hooks/commit-msg.sample
复制到.git/hooks
目录会发生什么。你得到同样的错误吗?
以下步骤可能会帮助您自己解决问题。如果没有,请将这些ls -l
命令的输出放在您的问题中,这将有助于我们弄清楚发生了什么。
答案 1 :(得分:1)
我自己有这个问题。事实证明,shell正在保留一些关于被删除的git repo的属性。删除后,我得到了相同的fatal: cannot copy
错误。关闭shell并打开一个新的解决了这个问题。在一个新的shell中,我能够初始化一个新的git repo。在删除它后尝试重新克隆回购时我也遇到了这个问题。启动一个新的shell再次解决了这个问题。
答案 2 :(得分:0)
我也遇到了这个问题。 原因是磁盘已满...