我有几个本地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上的所有分支推送到远程仓库上的单个分支(或者更确切地说是树)?或者我的整个方法是否被误导,有更好的方法来做到这一点?
干杯, 安德鲁
答案 0 :(得分:0)
听起来你正在为一些非常尴尬的事情付出巨大的努力。 Git是一个非常精细的版本控制系统,你没有理由将分支推送到某个“归档”存储库。
执行此操作的正确方法是使用标记来标记代码的稳定版本。
然后您可以创建代码的标记版本,如下所示:
$ git tag -a v1.0 -m "First stable release"
然后使用您用于接收提交/标记对象的任何git操作的常用语法访问该版本:
$ git checkout v1.0
有关如何在git中使用标记的详细信息,请参阅http://git-scm.com/book/en/Git-Basics-Tagging。
答案 1 :(得分:0)
我在stackoverflow上发现了一个关于merging repositories的问题,Olivier Verdier的答案解决了我的问题:我只需要将完成的repo添加到存档库中:
$ git remote add A /path/to/A
$ git fetch A
$ git remote add B /path/to/B
$ git fetch B
完成。