在压缩的公共和初始私有市场中拆分git回购
我想在Github上打开一个项目的源代码。在压缩的公共和初始私有市场中拆分git回购,git,github,merge,Git,Github,Merge,我想在Github上打开一个项目的源代码。 为了从一个干净的代码库开始并隐藏一些历史资料,我会将相当多的提交(超过2k)压缩成一个“初始提交” 问题是,是否有可能: 保留一个私有回购协议(其中会有一些密钥,travis conf,…)和所有初始提交 有一个干净的公共代码库(将所有提交压缩为一个) 并在需要时在私人市场上进行公共回购和“合并”,而不存在任何冲突 谢谢 有一个干净的公共代码库(将所有提交压缩为一个) 只需删除当前的.git、git init、添加所有内容并提交:1提交“挤压”所有
为了从一个干净的代码库开始并隐藏一些历史资料,我会将相当多的提交(超过2k)压缩成一个“初始提交” 问题是,是否有可能:
- 保留一个私有回购协议(其中会有一些密钥,travis conf,…)和所有初始提交
- 有一个干净的公共代码库(将所有提交压缩为一个)
- 并在需要时在私人市场上进行公共回购和“合并”,而不存在任何冲突
这将在私有repo的本地克隆中完成,然后将其推送到其私有托管服务器。我建议创建一个新的公共git repo,并将所有相关文件复制到该新项目中(我们现在称之为“public”)。做你最初的公开承诺。这为您的公共回购提供了无历史记录的起点 一旦你做到了这一点,在未来,你想要公开的所有承诺都应该公开
您现有的私人回购现在可以建立一个新的远程从公共。您希望在公共回购中进行的任何更改都应提交给公共回购,然后合并到您的私人回购中。您可以在当前回购中非常有效地执行此操作: 从:
# ...---o---H HEAD, master
做
得到
# ...---o---H HEAD, master
#
# H' public <-- H's exact content and commit message, no history
#…--o--H头,主人
#
#谢谢大家,这就是我想做的。但从公共回购到私人回购的拉/合并变化又如何呢?这种行为行得通吗?@Léo如果你的私人帐户和公共帐户从同一个提交开始是的:你可以为所有遗产提交声明一个孤立分支(),非常详细,比我的答案更完整+非常感谢你!经过一些测试,这是我尝试过的最好的策略。
# ...---o---H HEAD, master
#
# H' public <-- H's exact content and commit message, no history
git merge -s ours public
# ...---o---H---I HEAD, master <-- gives later merges an accurate base
# /
# H'' public
git remote add public -t public its://u/r/l # <-- '-t public` sets default push
git push public