You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从指定commit复制Git仓库并创建不含敏感提交的公开版本

结论

完全可行,整个操作不会修改你本地及私有远程仓库的原有提交记录,可以同时保留完整的私有版本和裁剪后的公开版本。

操作步骤

1. 同步本地私有仓库提交

进入本地私有仓库目录,确保当前master分支和私有远程完全同步:

git checkout master
git pull origin master

运行git log --oneline查看提交历史,记录提交B的短哈希值(比如示例中的ba98765):

edcba98 (HEAD -> master) E
dcba987 D
cba9876 C
ba98765 B
a987654 A (初始提交)

2. 生成裁剪后的提交链

基于当前master分支创建专门用于公开推送的新分支:

git checkout -b public-master

运行交互式变基命令,删除A、B两个提交:

# 命令中的ba98765替换为你上一步记录的提交B的哈希值
git rebase -i ba98765^ public-master

执行命令后会弹出文本编辑器,删除A、B对应的两行记录,保存并关闭编辑器后,git会自动生成以C为初始提交的新提交链C->D->E。

你可以运行git log --oneline验证结果,确认输出仅包含C、D、E三个提交即可。

3. 推送到公开远程仓库

在GitHub创建空的公开仓库,不要勾选初始化README、.gitignore、LICENSE等任何文件,回到本地仓库添加公开远程并推送:

# 添加公开远程,地址替换为你自己的公开仓库SSH/HTTPS地址
git remote add public-origin git@github.com:你的用户名/公开仓库名.git
# 将裁剪后的分支推送到公开远程的master分支
git push public-origin public-master:master

4. 恢复原有私有分支

操作完成后切换回原master分支,即可看到完整的A->B->C->D->E提交链,和操作前完全一致:

git checkout master
后续同步说明

如果后续私有仓库新增了提交需要同步到公开仓库,执行以下命令即可:

git checkout public-master
# 拉取私有仓库最新提交
git pull origin master
# 将新提交变基到裁剪后的分支
git rebase master
# 推送到公开远程
git push public-origin master
注意事项
  • 操作前建议备份完整的本地仓库,避免误操作导致提交丢失
  • 不要将public-master分支推送到你的私有远程,避免覆盖私有仓库的原有提交记录
  • 公开仓库不要直接提交修改,所有修改都在私有仓库的master分支完成后,按上述同步步骤同步即可

内容的提问来源于stack exchange,提问作者Oganesson118

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:42:00