如何发布git下的私有化项目

如何发布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 secretgit-crypt工具管理敏感文件

这样修正后,流程更加清晰和安全,避免了revert可能带来的混淆。

鸿蒙读书笔记

鸿蒙读书笔记

核心系统

kernel基本定义了线程,内存,基础数据结构的公共部分

是其他组件的基石

losbase

定义了基本的信号

定义了内存运算接口

定义了内存对齐接口

定义了休眠接口

bitmap

一些bitmap的运算

bitmap的数据结构

cpup

cpu使用量统计

err

err的IO定义于,err的定义

event

系统事件定义,及调度函数

其他

一些通用的数据结构定义

例如

  • 几种常见的锁
  • NodeList
  • mux
  • 系统类型
  • 队列
  • 进程结构

Linux定时备份任务

在当前用户目录下新建一个sh

按照我的备份方式就是

tar -jPcf BackupPath.tar.gztoBackupPath

然后运行crontab -e写入

* * * * 1 sh {你sh所在的目录位置}+{你的sh文件名字全称}

保存,然后这个sh文件就会每周一执行一次

略方便

我是如何为我的博客添加SSL加密的

关于Let’s Encrypt参考:letsencrypt官网

在前辈们的辛勤劳作下,我们这些小白用户终于能够快速的自动化的申请SSL证书了。

所以申请证书只需要以下几个步骤,这里我们采用的是官方提供的sh脚本,据某些大牛说还有个更小巧的py脚本,但是我是aliyun,对这种基本都是坑:

  1. su
  2. git clone https://github.com/letsencrypt/letsencrypt
  3. cd letsencrypt
  4. ./letsencrypt-auto

继续阅读“我是如何为我的博客添加SSL加密的”