2013-05-11 62 views
3

我想为项目保留两个单独的git远程存储库(同时拥有一个本地副本)。一个应该是开发库,一个应该是代表性的公共存储库。我希望公共存储库仅包含选定的状态,即我只想提交稳定版本而没有小提交的中间历史记录。就我所了解的Git而言,如果我时不时地提交到公共存储库,它会自动更新提交的整个历史记录。有没有解决的办法?如何为所选提交(状态)保留第二个git远程存储库

回答

3

我的问题的答案是基于@Andomar的回答和@Michael Durrant推荐的博客文章。

不同的分支可以被用于释放(master),显影(development),修补程序(hotfix)等每个分支可以被推到不同的远程仓库 - 公共酮(origin)或一个用于发展( dev)。

的策略应该是致力于发展变化的development分支,并将其推到dev远程仓库:

$git checkout dev 
...do some changes... 
$git commit -m "some development change" 
$git push -u dev development 

达到后一个新的释放点的developmentmaster分支机构应使用--squash合并,它在一次提交中将所有对开发分支的提交打包,这阻止了开发历史出现在主分支上。

$git checkout master 
$git merge --squash development 
$git commit -m "<new release message>" 
$git push -u origin master 

这将导致一个提交上origin将包含所有自上次发布以来的发展变化,从而隐藏包含在dev的发展历史。

0

认为“选定的历史”而不是“选定的提交”。 git push默认选择加入分支机构,因此您可以选择仅将stable分支(例如)推送到特定的远程设备。然而,如果不推送一个分支,就不能推送一个分支 - 分支的头部提交由其父,子内容(又名“树”)和一些元数据(作者,提交者,消息等)定义, 。

1

典型的解决方案是为此创建两个分支,例如developmentmaster。你可以把唯一掌握公众资源库和git push

git push (remote) master 

为了(remote)只跟踪默认master,使用git remote

git remote set-branches (remote) master 
+0

感谢您的回答。这让我走上了正轨。 – 2013-05-11 15:52:11

1

我建议使用的

http://nvie.com/posts/a-successful-git-branching-model/

战略

基本上你有一个开发分支的工作进行中和一个马代表生产的代表分支。

此外,您可以针对个人功能,错误修复或杂事开发分支机构。

然后,将这些分支合并到开发分支中,您可以在其中进行集成测试,然后将其发布到可以执行质量检查的发布分支。

准备发布时,将发布合并到主服务器并推送到生产服务器。

当您需要进行热修复时,请将其发布到发布分支。

+0

感谢您发布此链接。它给了我很好的关于如何组织我的工作流程的想法。 – 2013-05-11 15:53:10

相关问题