我有一个git项目,我即将推送到SourceForge。我本地仓库的原产地是一个共享文件系统仓库,它为我提供备份工具。
当我最终将SF添加为另一个远程时,我只想将最新的(=版本化的)提交作为我的代码在该repo上的起始基础,并且不包括所有先前包含可能垃圾/敏感/的提交令人尴尬的代码。
我的问题类似于this one,但问题只是遗漏了一些历史记录 - 我想要遗漏所有的历史记录并让最新的承诺成为SF上项目代码的起点。重要的是,完成此操作后,我希望“推向上游”继续工作,即使原点和SF不同。
这可能吗?顺便说一句,我是通过Eclipse来做的。例如:It。
更新
我原来的问题应该更加明确,尽管到目前为止的答案有助于澄清我正在努力实现的目标。
我希望只将整合提交推送到SF,代表已发布的版本。 这就是我想要做的事情:
[master] A--B--C--D--E--F--G--H--I... --> push to origin (private)
\ \
[public] V1----------V2... --> push to public remote repo
@michas's
回答启动我在分支公共上的V1,但我无法弄清楚如何继续扩展此分支与后续版本提交。我已尝试使用rebase,但无法得到我想要的结果。
答案 0 :(得分:0)
听起来你想要从一个新的回购开始。为什么不删除或重命名旧的仓库并创建一个全新的仓库。然后复制所有文件,提交它们并推送。
答案 1 :(得分:0)
好吧,你不能推送当前提交,因为这个提交包含整个“垃圾”历史。
但是,您可以创建具有相同内容但没有任何历史记录的新提交。
git checkout --orphan fresh # create a new branch called `fresh` without any history
git commit # add your work as a new commit
git diff fresh master # the both branches should contain the same content (assuming you original branch was called `master`)
git log # verify the current branch does not contain any history
git push sf fresh # push that branch
git push sf fresh:master # (or you might want to call that branch master on sf)
答案 2 :(得分:0)
@michas提供的答案并不允许我随后使用合并历史来维护分支。这需要使用git merge --squash。我最终想出的方案类似于described here。
只是整理一下,这个问题就得到了一个好评。