删除旧的git存储库后创建一个新的git存储库

时间:2012-03-16 21:12:49

标签: git

我不确定我的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

关于如何摆脱这个洞的任何建议??

3 个答案:

答案 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)

我也遇到了这个问题。 原因是磁盘已满...