代码之家  ›  专栏  ›  技术社区  ›  Azeem.Butt

推送到裸Git存储库(远程)会导致它停止裸存储

  •  -1
  • Azeem.Butt  · 技术社区  · 15 年前

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

    然后通过ssh在本地克隆裸远程存储库,方法如下

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

    [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 回复  |  直到 15 年前
        1
  •  4
  •   Jörg W Mittag    15 年前

    这不应该发生。我的猜测是,要么是某种钩子脚本(可能是 post-receive ),这会导致结帐 Git中有一个bug。这两种可能性都不大,但这是我唯一能想象的。

        2
  •  3
  •   che    15 年前

    可能zip/unzip不保留文件权限(例如,可执行位),因此会激活一些以前停用的挂钩。您可能希望检查服务器上的钩子权限,或者跳过整个zip部分,直接在服务器上创建裸存储库,并使用常规git推送上传数据。