我刚刚开始使用git进行版本控制。我想在本地文件服务器上保留我的存储库的备份副本。在阅读了备份git存储库的正确方法之后,我决定将存储库存储为文件服务器上的git包。
我可以捆绑我的存储库并将生成的包复制到文件服务器。校验。我也试过克隆和拉扯它。一切运作良好。但是,我也想不时地推动我的本地变化。当我执行像
这样的事情git push bundlefile.git
我收到错误:
error: failed to push some refs to 'bundlefile.git'
您可以克隆或从捆绑中提取,但是无法推送它吗?我每次想要备份时都不想创建整个存储库的捆绑包。
此用户错误或捆绑包是否不打算推送到?
答案 0 :(得分:7)
您无法直接推送到捆绑文件。捆绑文件是存储库的压缩表示,要修改它将涉及再次捆绑,推送和捆绑。
执行此操作的一种方法是按照您的说法,每次要进行备份时都创建一个新的捆绑包。
另一种方法是在文件服务器上创建 bare 存储库,并推送到该存储库。裸存储库是没有工作目录的存储库,它实际上是普通克隆的.git
目录的内容。您可以使用git init --bare
创建一个裸存储库。
答案 1 :(得分:0)
如果您具有对远程文件服务器的写访问权,请确保:
myrepo$ git init --bare //server/my/backup/folder/myrepo.git
myrepo$ git remote add backup //server/my/backup/folder/myrepo.git
myrepo$ git push backup --mirror
我还没有尝试过,但是在MSys中,我使用/j/myFolder/myrport.git和
myrepo$ git push --set-upstream backup master
然后还原只是该还原的一个副本
dev$ git clone //server/my/backupo/folder/myrepo.git
Cloning into myrepo...
dev$ cd myrepo
,您又回到了快乐的地步。
答案 2 :(得分:-5)
听起来您在文件服务器上有权限问题。确保您的用户/组具有写入权限。