我想在Github上开源项目。
有很多提交(超过2k)我会压缩到一个“初始提交”,以便从一个干净的代码库开始并隐藏一些历史的东西。
问题是,是否有可能:
感谢。
答案 0 :(得分:3)
您可以在当前的回购中非常有效地执行此操作:
从:
开始# ...---o---H HEAD, master
做
git cat-file -p master \
| sed '1,/^$/d' \
| git commit-tree HEAD^{tree} \
| xargs git branch public
获取
# ...---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
你已经完成了。
(编辑:添加了-t public
安全游戏,因此你必须做一些明确的事情来推动非公开历史记录)
答案 1 :(得分:1)
有一个干净的公共代码库(所有提交压缩成一个)
只需删除当前的.git,git init,添加所有内容并提交:1提交“压缩”其他所有内容。
保留私人仓库
是的,您甚至可以使用Bitbucket等托管服务提供免费私人回购。
并处理公共回购并在私人需要时“合并”而没有任何冲突
如果您没有任何并发修改,并且合并应该是微不足道的或快进的 它将在私有仓库的本地克隆中完成,然后将其推送到其私有托管服务器。
答案 2 :(得分:1)
我建议创建一个新的公共git仓库并将所有相关文件复制到该新项目中(我们现在将其称为“PUBLIC”)。你最初的提交PUBLIC。这为您的公共回购提供了没有历史记录的起点。
有了这个,将来,您希望公开的所有提交都应该提交给PUBLIC。
您现有的私人仓库现在可以设置一个从PUBLIC获取的新远程。您想要进行的任何更改应该在公共仓库中进行,应该提交给PUBLIC,然后合并到您的私人仓库中。