如何发布git下的私有化项目
流程
1. 私有项目添加远程仓库
# 添加公开仓库作为远程仓库
git remote add public-repo [开放部分远程地址]
# 验证远程仓库添加成功
git remote -v
2. 为公开的远程仓库创建特殊的分支
# 从当前分支创建发布分支
git checkout -b release-branch
# 或者从main/master分支创建
git checkout main
git checkout -b release-branch
3. 对已有的开发内容进行Squash操作,然后merge到发布分支
# 首先找到能够公开的最后一个版本(commit hash)
git log --oneline # 查看提交历史,找到合适的公开起点
# 基于公开起点创建发布分支(替代之前的revert方式)
git checkout -b release-branch [公开起点的commit hash]
# 或者如果已经创建了release-branch,重置到公开起点
git checkout release-branch
git reset --hard [公开起点的commit hash]
# 将开发分支的内容squash合并到发布分支
git merge --squash develop-branch
# 提交汇总的更改
git commit -m "Release: 版本号 - 功能概述"
# 如果确实需要使用revert(不推荐,因为会产生反向提交)
# git revert [需要隐藏的私有提交]..HEAD --no-commit
# git commit -m "隐藏私有开发内容"
4. push
# 推送到公开仓库的发布分支
git push public-repo release-branch:main
# 或者推送到特定分支
git push public-repo release-branch:release-branch
# 如果需要打标签
git tag -a v1.0.0 -m "版本1.0.0发布"
git push public-repo --tags
完整示例脚本(修正版)
#!/bin/bash
# 设置变量
PUBLIC_REPO_URL="https://github.com/username/public-repo.git"
RELEASE_BRANCH="release-(date +%Y%m%d)"
PUBLIC_START_COMMIT="a1b2c3d" # 替换为实际能够公开的commit hash
# 1. 添加远程仓库
git remote add public-repoPUBLIC_REPO_URL
# 2. 基于公开起点创建发布分支
git checkout -b RELEASE_BRANCHPUBLIC_START_COMMIT
# 3. Squash操作(从develop分支合并,但只包含公开内容)
git merge --squash develop
# 检查合并内容,移除敏感信息
git status
git diff --cached
# 提交公开版本
git commit -m "Release: v1.0.0 - 公开功能更新"
# 4. 推送到公开仓库
git push public-repo $RELEASE_BRANCH:main
echo "发布完成!"
更安全的替代方案
# 方案一:使用cherry-pick选择特定提交
git checkout -b release-branch [公开起点commit]
git cherry-pick [选择需要公开的提交范围] --no-commit
git commit -m "Release: 精选功能更新"
# 方案二:使用patch方式提取更改
git format-patch [公开起点commit]..develop --stdout > changes.patch
git checkout release-branch
git apply changes.patch
git add .
git commit -m "Release: 应用公开更改"
注意事项
- 重要:发布前务必检查所有文件是否包含敏感信息(API密钥、密码、内部链接等)
- 使用
git log --oneline
找到合适的公开起点commit - 考虑使用
.gitignore
和.gitattributes
过滤敏感文件 - 推荐在发布前创建代码审查流程
- 可以使用
git secret
或git-crypt
工具管理敏感文件
这样修正后,流程更加清晰和安全,避免了revert可能带来的混淆。