Skip to content

开源次项目

开源次项目

1、新建仓库

新建gitee开源仓库vuepress-theme-vdoing-one-public

image-20250101075347488

2、拷贝数据

本地拷贝自己私有仓库到一个新目录:

image-20250101075848367

3、推送数据

删除本地开源仓库私密信息并推送到新仓库:

  • 删除docs下核心Md,只保留几个md让用户能够正常访问博客框架就好

已删除:

image-20250101080428825

  • 删除百度统计里涉及自己的代码:

docs\.vuepress\common\baidutj.ts文件:

image-20250101080526227

  • 去除twikoo里自己的私有地址

image-20250101082503054

image-20250101082601486

  • 删除shell目录下云服务器ip及密码等信息

image-20250103121307026

image-20250103121320841

  • 修改readme文件

image-20250101081614567

  • 我们先本地测试下效果
bash
npm i
npm run docs:dev

image-20250101081919191

image-20250101082147515

(经测试,文章等都可以正常浏览。)

  • 推送
bash
rm -rf .git
git init 
git add -A
git commit -m "first commit"
git remote add origin git@gitee.com:onlyonexl/vuepress-theme-vdoing-one-public.git
git push -u origin "master"

4、再次更新

问题:如何在我私有原来的项目上,克隆一个分支,然后把这个分支推送到自己的开源仓库?

具体情况如下:

projectA是gitee上我的一个人私有项目,当前使用的是master分支。如何在本地基于master新建一个分支public,然后修改一些文件,然后把这个public分支推送到一个已经存在的开源项目上呢?当后续需要更新public时,更新完,直接推送public就好?

请问,以上这个需求可以实现吗?


gpt回答

是的,您可以按照以下步骤在本地基于 master 分支创建一个新的 public 分支,修改文件后将该分支推送到您自己的开源仓库。下面是具体的操作步骤:

步骤 1: 克隆私有项目

首先,您需要将私有项目克隆到本地:

bash
git clone git@gitee.com:username/projectA.git
cd projectA

请将 username 替换为您的 Gitee 用户名。

步骤 2: 创建新分支

在本地创建一个新的分支 public,并切换到该分支:

bash
git checkout -b public

步骤 3: 修改文件

public 分支上进行您需要的修改。完成后使用以下命令查看修改状态:

bash
git status

步骤 4: 提交修改

将您的更改添加到暂存区并提交:

bash
git add .
git commit -m "更新 public 分支的文件"

步骤 5: 将 public 分支推送到开源项目

在推送之前,您需要将开源仓库添加为一个新的远程源。假设您的开源项目的地址是 git@github.com:username/public-repo.git,您可以添加远程仓库:

bash
git remote add public-repo git@github.com:username/public-repo.git

然后,您可以将 public 分支推送到该开源项目:

bash
git push public-repo public

步骤 6: 更新 public 分支

当您需要再次更新 public 分支时,可以在本地进行更改,然后重复步骤 3 和步骤 4 提交更改。最后,您只需使用以下命令推送更新:

bash
git push public-repo public

总结

以上步骤概述了如何在私有项目中创建一个新的 public 分支,进行修改,然后将其推送到您的开源仓库。这样,您可以保持私有项目的安全性,同时将所需的内容公开在开源项目中。

如果您在操作过程中遇到任何问题,请随时提问!

自己亲自测试

bash
git checkout -b public #创建新的分支



git branch -v #查看本地分支有哪些
git branch -av #查看本地分支和远程分支有哪些

# *代表当前所处的分支


#切换分支
$ git checkout 分支名

存在个问题

然而,有个问题,当私有master分支有新特性时,如何才能把它们更新到public分支呢? 但是我又希望之前在public做的一些操作不要改变(因为这里删除的是master分支里一些私有机密信息)


要将私有 master 分支的新特性合并到 public 分支,同时保持 public 分支的修改(如删除私有信息),您可以使用 git merge 命令,结合 --no-ff 选项来确保保留历史记录。以下是具体步骤:

步骤 1: 切换到 public 分支

首先,确保您在 public 分支上:

bash
git checkout public

步骤 2: 获取最新的 master 分支

确保您的本地 master 分支是最新的,您可以通过以下命令切换到 master 并拉取最新的更改:

bash
git checkout master
git pull origin master  # 更新本地 master 分支

步骤 3: 切换回 public 分支并合并

现在,切换回 public 分支并将 master 分支的新特性合并到 public 中:

bash
git checkout public
git merge master --no-ff

步骤 4: 解决冲突(如果有)

在合并过程中,如果存在文件冲突,Git 会提示您解决冲突。您需要手动编辑有冲突的文件,解决冲突后将它们标记为已解决:

bash
git add <filename>  # 添加解决冲突后的文件
git commit -m "解决合并冲突"

步骤 5: 推送更新

完成合并后,您可以将 public 分支的更新推送到开源仓库:

bash
git push public-repo public

重要注意事项

  • 保留私有信息的清理: 在合并后,您需要仔细检查 public 分支,确保之前删除的私有信息仍然保持不变。由于您在 public 分支上做过修改,合并后可能需要再次删除或处理这些信息。

  • 使用 git rebase: 如果您希望在更加线性的历史下整合这些改动,也可以考虑使用 git rebase,但这对于已推送到公共仓库的分支可能会引起麻烦,因此需要谨慎。

小结

通过以上步骤,您可以将 master 分支的新特性合并到 public 分支,同时保留 public 分支中对私有信息的修改。如果您在操作中有任何疑问,欢迎随时提问!

结论

有点小麻烦,还不如直接克隆源项目,再次推送来的实在。

删除开源仓库docs目录下这2个文件:

image-20250105092418925

复制本地私有最新仓库的这2个文件到开源仓库docs目录下:

image-20250105092444854

本地构建测试,观察效果:

nice😜

image-20250105093058629

直接推送:

image-20250105093324853

最近更新