推动裸Git存储库(远程)导致它停止裸露

时间:2009-10-10 17:25:53

标签: git push

我有一个名为TestRepo的本地存储库。我用--bare选项克隆它,压缩这个克隆,然后把它扔到我的服务器上。解压缩它,它仍然是裸露的。

然后我通过ssh在本地克隆裸露的远程存储库,类似于

git clone ssh://git@host.com/~/TestRepo.git TestRepoCloned

本地TestRepoCloned 裸,并且有一个名为“origin”的远程。它似乎从其配置文件的外观正确跟踪

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = ssh://git@host.com/~/TestRepo.git
[branch "master"]
    remote = origin
    merge = refs/heads/master

我编辑现有文件。我通过

将更改提交到当前分支(主)
git commit -a -m "Edited a file."

提交成功,一切顺利。

我决定通过SSH使用

将此更改推送到远程存储库
git push

远程存储库现在不再是裸存,但有一个完整的工作目录,并且我会在所有进一步尝试推送它时收到连续的错误消息。

我读到的所有内容似乎都表明我正在做的事情是正确的,但它根本就没有用。我应该如何将更改推送到裸露的远程仓库并实际保持裸露

2 个答案:

答案 0 :(得分:4)

这不应该发生。我的猜测是,有某种钩子脚本(可能是post-receive),导致结帐在Git中存在错误。这两个都不太可能,但这是我唯一能想象的。

答案 1 :(得分:3)

zip / unzip有可能不保留文件权限(例如可执行位),从而激活一些先前已停用的钩子。您可能想检查服务器上的挂钩权限或跳过整个zip部分,直接在服务器上创建裸存储库,并使用常规git push上传我们的数据。