15

我刚刚开始使用 git 进行版本控制。我想在本地文件服务器上保留我的存储库的备份副本。在阅读了备份 git 存储库的正确方法后,我决定将存储库作为 git 包存储在文件服务器上。

我可以捆绑我的存储库并将生成的捆绑包复制到文件服务器。查看。我还尝试克隆并从中提取。一切运作良好。但是,我也想不时推送我的本地更改。当我执行类似

git push bundlefile.git

我得到错误:

error: failed to push some refs to 'bundlefile.git'

您可以克隆或从捆绑中提取,但不能推送到它吗?每次我想要备份时,我真的不想创建整个存储库的捆绑包。

这个用户错误还是不打算推送到捆绑包?

4

3 回答 3

10

您不能直接推送到捆绑文件。捆绑文件是存储库的压缩表示,要对其进行修改将涉及解绑、推送和再次捆绑。

一种方法是如您所说,每次要进行备份时都创建一个新包。

另一种方法是在文件服务器上创建一个存储库,然后推送到该存储库。裸存储库是没有工作目录的存储库,它本质上是.git来自正常克隆的目录的内容。您可以使用git init --bare.

于 2012-08-09T03:16:43.053 回答
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

你又回到了快乐的状态。

于 2018-07-13T17:15:51.997 回答
-6

听起来您在文件服务器上有权限问题。确保您的用户/组具有写入权限。

于 2012-08-09T02:51:56.703 回答