我想知道用它的远程仓库连接和同步git仓库的COPY(存档,而不是克隆)。
背景: 我有一个本地和远程存储库。我使用git archive压缩我的本地存储库,然后将其复制到服务器:
$ git archive --format=tar HEAD | gzip > myarchive.tar.gz
问题: 解压缩服务器上的存档后,如何再次将服务器副本与远程存储库连接并同步?
如果我这样做:
$ git init
$ git remote add origin git@github.com/myusername:reponame.git
$ git fetch origin
git status仍会将所有内容报告为未跟踪。
应该我要做什么,以便我的解压缩文件夹与远程仓库完全同步,所以我可以简单地将任何未来提交到远程仓库?
非常感谢, 添
答案 0 :(得分:1)
不要进行存档:执行 git bundle
:这将为您提供一个文件,但您可以从中拉出一旦复制到远程位置。
请参阅" How can I email someone a git repository?"
该捆绑包也可以是增量捆绑(另请参阅" Difference between git bundle and .patch") 这意味着您不必复制完整 repos,只复制自上次备份以来丢失的提交。
我有一个脚本可以访问我的所有裸存储库并每周进行一次完整备份,每天进行增量备份(如果检测到新的提交):sbin/save_bundles
。
当Nevik Rehnel提到in the comments时,git archive只会保存一个修订版本,这会使远程仓库中的任何同步都不完整(缺少中间提交)。
另一种方法是tar the all repo,但包括太多(包括可能的私有敏感文件或钩子脚本)。 git bundle
是git方式。