我正在开发一个使用SVN repo作为主要仓库的项目。他们制作标签,标签是发布到实时环境的标签。
所以我将这两者克隆到SVN工作副本和本地git仓库中。我使用本地git仓库中的提交跟踪所有本地更改。当我取得实质性进展时,我会转到OS X Finder并从我当地的git repo中拖放复制所有代码目录,替换我本地SVN工作副本中的代码目录。然后我SVN添加更改并将其提交到远程。这样,我的数百万本地提交都不会在远程服务器上结束,我也不必进行任何变基。 (见下图。)
但是,我仍然希望找到一个更简单的解决方案。我读到了git如何内置SVN支持,但是Git's site says,"通常最好通过重新定位你的工作来保持你的历史记录线性化#34;。好的,所以我尝试了这个,我从遥控器做了一个拉,并不得不做一个rebase。 rebase涉及我必须解决的大约20个冲突,然后当它完成时,我的所有提交都消失了。是的,它现在很漂亮和线性,但不,那不是我想要的,因为我想保留我的当地历史。此外,如果我git svn dcommit,它将推送多个提交(图中的两个,为了简洁起见),而不仅仅是我想要的。 (见下图。)
看,我想要做的是,我希望能够将我的git repo的当前状态作为单个提交发布到SVN,并自动从SVN反向获取自己服务器回到我的git repo到远程分支。我永远不想做任何变基。如果任何其他开发人员为SVN贡献了一些东西,我会将这些更改合并回我的主分支。 (见最终图表。)
如何完成最终图表中的图片?可能吗...?
在说出你的建议时,请记住,我对git和SVN来说还是比较新的。我主要使用SourceTree和SmartSVN,但如果这是完成我需要做的事情的唯一方法,我不怕命令行。对于任何危险的操作,我倾向于使用命令行,除非我100%确定我知道我的GUI工具在做什么。但这些都在某些方面让我感到困惑。谢谢你的帮助。