如何将git存储库的COPY(存档,而不是克隆)连接到其远程?

时间:2014-07-25 05:13:32

标签: git github archive

我想知道用它的远程仓库连接和同步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仍会将所有内容报告为未跟踪。

应该我要做什么,以便我的解压缩文件夹与远程仓库完全同步,所以我可以简单地将任何未来提交到远程仓库?

非常感谢, 添

1 个答案:

答案 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方式。