我有一个名为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
远程存储库现在不再是裸存,但有一个完整的工作目录,并且我会在所有进一步尝试推送它时收到连续的错误消息。
我读到的所有内容似乎都表明我正在做的事情是正确的,但它根本就没有用。我应该如何将更改推送到裸露的远程仓库并实际保持裸露?
答案 0 :(得分:4)
这不应该发生。我的猜测是,有某种钩子脚本(可能是post-receive
),导致结帐或在Git中存在错误。这两个都不太可能,但这是我唯一能想象的。
答案 1 :(得分:3)
zip / unzip有可能不保留文件权限(例如可执行位),从而激活一些先前已停用的钩子。您可能想检查服务器上的挂钩权限或跳过整个zip部分,直接在服务器上创建裸存储库,并使用常规git push上传我们的数据。