是否可以在具有不同提交历史记录的两个不同的远程(私有和公共)上维护相同的 git 项目?

Cra*_*shi 1 git github

我一直在开发一个私人存储库,该项目最初是使用一些敏感数据创建的。现在我已经有了足够的项目内容,我想在 Github 上公开它。

这项工作仍在进行中,我想避免维护两个不同的存储库。

我们的想法是
在此输入图像描述

一切都commit 29将保持同步(私人和公共)。

从我读到的

根据 Git 的工作方式,这似乎是不可能的(参见基于这个答案

是否可以从我的私人存储库中摆弄 git hooks 来推送到 github ?

所以参考文献

管理具有不同历史记录的私有和公共远程
将现有源代码导入 GitHub
将远程重置为某个提交
使用具有两个不同云的 git 分支同时维护私有和
公共存储库 GitHub:如何将公共存储库的分支设为私有?

jin*_*ngx 5

您可以使用孤立分支来实现此目的:

# Suppose the tip of master has everything you want to start out as
# the initial commit in github
git checkout master
git remote add github <url to the project>
git checkout --orphan public
git push --set-upstream github public
Run Code Online (Sandbox Code Playgroud)

public现在,您的本地存储库中实际上有两个存储库,由和指向master。它们是不相关的,所以你无法选择merge任何一种方式。但是,您可以使用 或 补丁在它们之间复制提交cherry-pick

如果您希望继续用于master未来的开发,只需执行以下操作:

git checkout master
git branch master-archived
git reset --hard public
Run Code Online (Sandbox Code Playgroud)