“git push –mirror”足以备份我的存储库吗?
我是一个独立开发者,在本地的Git仓库中工作。 对于备份,我想将该存储库的确切副本发送给另一台服务器。
这样做足够了吗?
git push --mirror 我在问,因为在Git告诉我“一切都是最新的”之前,我有时可以运行这个命令两三次,所以显然它不是一个确切的镜像。 这似乎是重新推动追踪分行…?
 $ git push --mirror Counting objects: 42, done. Delta compression using up to 8 threads. Compressing objects: 100% (30/30), done. Writing objects: 100% (30/30), 5.09 KiB, done. Total 30 (delta 17), reused 0 (delta 0) To ssh://my/repo/url c094a10..0eedc92 mybranch -> mybranch $ git push --mirror Total 0 (delta 0), reused 0 (delta 0) To ssh://my/repo/url c094a10..0eedc92 origin/mybranch -> origin/mybranch $ git push --mirror Everything up-to-date 
发生了什么,这是一个好策略?
 编辑:我不喜欢使用像git bundle或.tar.bz2档案,因为我想备份是一个可访问的工作副本。 由于我的备份服务器连接到networking,并始终打开,所以当我在路上时,这是访问存储库的好方法。 
我会说这是一个完全可以接受的策略来备份你的仓库。 它应该对存储库中的每个ref执行一次远程启动。 使其成为本地存储库的完整“镜像”。
编辑:我刚才看到你的问题更新的描述。 看来git正在推动你的远程参考遥控器本身以及其他一切。 一旦推完成,远程参考将被更新,以反映你刚刚推。 现在,远程存储库已经过期,因此需要进一步推进。 如果这不能满足你。 你可以删除这个远程参考
git push:origin / mybranch
然后使用
git push –all
记住,这不会推动你创build的任何新的分支。
 你第二次看到某些东西的原因是 – --mirror比你--mirror的要多一点。 除了你当地的分支,它也推动你的远程分支,因为镜子隐含着一切 。 所以,当你正常推动(或使用 – --mirror ), mybranch被推动和origin/mybranch更新,以反映origin/mybranch的新状态。 当你用--mirror推送时, origin/mybranch也被推送。 
 这会导致你所看到的陌生,当你从遥远的地方拉下来时,也会变得更加奇怪。 你会得到名称为origin/origin/mybranch等的分支。所以通常最好使用--mirror一次拷贝,只需使用普通的push(可能用--all )来正常使用。 
 要始终推送所有分支和标签,可以像下面这样更新.git/config : 
 [remote "origin"] url = ... fetch = ... push = +refs/heads/* push = +refs/tags/* 
这将使镜像正常推,类似于镜像,除了它不会删除源不存在的分支或非快速更新。
不幸的是,你没有得到与推的确切副本。 你失去了你的藏身处
 我通常使用git push --all 。 我只使用 – 镜像时,我需要推新创build的分支机构,或者我删除了一些分支机构,不想一一命名。 否则, push --all通常工作,因为我需要。 
我所做的是:
 设置回购: git clone --mirror user@server:/url-to-repo.git 
 然后,当你想刷新备份:克隆位置的git remote update 。 
这将备份所有分支,包括后来添加的新分支,尽pipe值得注意的是被删除的分支不会从克隆中删除(这对于备份来说可能是件好事)。
 为什么不压缩.git文件夹的副本并将其发送到另一台服务器? 
本着与琥珀的回答相同的精神,你可以:
-  推送到使用git bundle创build的本地备份
- 将该唯一文件复制到远程服务器。