2013-11-21 48 views
0

我有几个本地git仓库,这是逻辑上分离的项目。当每个项目完成后,我想让整个存储库成为“存档”存储库的一个分支,以防将来出现错误。因为最终每个存储库都将成为归档存储库的一部分,所以我认为我会从一开始就将每个存储库推送到归档存储库的远程副本。你可以推动整个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://[email protected]/.../archive.git 
git backup 

这会将A中的每个分支X都推送到远程分支A/X上。不幸的是,A中的每个分支都是远程存储库上的一个单独的断开连接的分支,所以我在A中失去了历史,而这并不是我想要的。

有没有办法将A上的所有分支推送到远程回购的单个分支(或者说是一棵树)?或者我的整个方法被误导了,还有更好的方法来做到这一点?

干杯, 安德鲁

+0

为什么不使用'git tag'正确标记不同项目的稳定版本? –

+0

您的最终产品将是一个“回购充分的回购”,其中,从“回购充满回购”中获得“回购Q”,您必须首先复制整个回购仓库,然后去掉所有不需要的回购仓库只有repo Q,然后将所有分支重新命名为原来的名称。这不是git的设计目的,它会变得尴尬和缓慢。最好将你的repo归档到(dir |文件夹)-full-of-repos。然后,为了将“repo Q”从“(dir | folder)充满repos”中取出,您只需复制“dir/repoQ”即可完成。 – torek

回答

0

我发现了一个问题,关于计算器约merging repositoriesOlivier Verdier回答解决我的问题:我只需要完成的回购协议添加到归档存储库:

$ git remote add A /path/to/A 
$ git fetch A 
$ git remote add B /path/to/B 
$ git fetch B 

完成。

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

+0

我使用了很多标签,但这里没有意义,因为它们是不同的项目。我也不想将分支推送到远程存储库,我想让整个存储库成为另一个存储库的分支。也就是说,一旦项目完成,我想将其移入存储库。 – Andrew

+0

不确定你想要在这里做什么 - 它确实是非正统的 - 但听起来像你找到了你的答案。 –

相关问题