【发布时间】:2013-12-05 21:33:43
【问题描述】:
我有几个本地 git 存储库,它们在逻辑上是独立的项目。当每个项目完成后,我想让整个存储库成为“归档”存储库的一个分支,以防将来出现错误。因为,最终,每个存储库都将成为存档存储库的一部分,所以我认为我会从一开始就将每个存储库推送到存档存储库的远程副本。
所以我有单独的存储库:存档,A,B,... 我想将它们推送到一个远程,如下所示:
archive -- A as a branch
\---B as a branch
等等。
我搜索了 git 文档,并在网上搜索,并想出了以下 别名:
backup = "!for br in $(git branch --column|sed 's/*//';); do git push archive ${br}:$(basename $PWD)/${br}; done"
所以现在,从 A 来说,我可以这样做:
git remote add archive ssh://git@bitbucket.org/.../archive.git
git backup
这会将 A 中的每个分支 X 推送到远程上的分支 A/X。不幸的是,A 中的每个分支都是远程存储库上一个单独的断开连接的分支,所以我丢失了 A 中的历史记录,这并不是我真正想要的。
有没有办法将 A 上的所有分支推送到远程仓库上的单个分支(或者更确切地说是一棵树)?还是我的整个方法都被误导了,有更好的方法吗?
干杯, 安德鲁
【问题讨论】:
-
为什么不直接使用
git tag来正确标记不同项目的稳定版本? -
您的最终产品将是一个“repo full of repos”,其中,要从“repo full of repos”中获取“repo Q”,您必须首先复制整个 repo full of repos,然后删除所有不需要的 repos,只留下 repo Q,然后将所有分支重命名为原始名称。这不是 git 的设计目的,它会很尴尬而且很慢。最好将您的 repo 存档到 (dir|folder)-full-of-repos。然后,要从“(dir|folder) full of repos”中获取“repo Q”,只需复制“dir/repoQ”即可。