0

我搜索了一下,但只找到了类似问题的解决方案。那么,是否有可能拥有一个仅包含Production(或任何您喜欢的名称)分支的远程仓库,并且不引用合并到的其他分支上的提交Production?我们永远不会进行快进合并,因此Production分支只会发布打算实际发布的提交。

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

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

4

1 回答 1

1

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

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.

于 2019-12-11T13:13:51.647 回答