繁体   English   中英

仅带有生产分支的 Git 存储库(无开发历史)

[英]Git repo with production branch only (no development history)

我搜索了一下,但只找到了类似问题的解决方案。 那么,是否有可能有一个远程仓库只包含Production (或任何你喜欢叫它的东西)分支而没有引用其他分支上的提交,这些分支合并到Production 我们永远不会进行快进合并,因此Production分支将只有旨在实际发布的发布提交。

目标是限制对没有开发历史和中间进度的正确版本的访问。 我试图寻找限制分支访问的方法,但只找到了保护分支从写入到不读取的参考。 确实意识到这可能有点违背 Git 本身的目的,我可能只是将发布包上传到某个地方,但如果可能的话,增量保存它似乎更容易,磁盘空间/网络效率更高。

我可以想象的解决方法是拥有第二个本地存储库,我将仅在其中复制和提交当前发布的代码,但目前它是 B 计划。 :-)

正如评论中提到的,您可以通过始终使用壁球合并来“分离”发布分支的历史记录。 每次你想要合并一个不应该在发布仓库上可见的分支时,你可以使用类似于以下的命令:

git checkout release
git merge --squash cool-feature-branch
git commit -m "Release cool feature."

或者,您可以清理现有的发布分支,并使用filter-branch仅保留“主线”提交:

git checkout release
git filter-branch --parent-filter 'read a b rest; echo $a $b' -- --first-parent

此命令仅通过跟踪每个提交的第一个父级来枚举发布分支上的提交,并仅使用单个父级重写这些提交。 最终结果是该分支与已合并的所有分支“分离”(快进合并除外,它们与直接提交到该分支的提交无法区分)。

一旦您准备好只包含您希望对客户可见的提交的发布分支,您可以使用git log release来验证提交列表,并使用git push <remote> release来推送发布分支。 这只会推送git log显示的提交。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM