我是sourceforge上FreeGLUT项目的当前维护者之一.这段代码存储在SVN仓库中,但为了激发其他人的贡献,我想提供一个git repo.我已经在github上有一个svn trunk的git-svn克隆目前在github上(通过SmartGit制作,实际上与git-svn并不真正兼容).
我通过克隆来做到这一点https://svn.code.sf.net/p/freeglut/code/trunk/freeglut
.但是,我现在发现我应该克隆https://svn.code.sf.net/p/freeglut/code
并让SmartGit的svn网桥弄清楚树枝和树干.
我在本地创建了这个新的正确克隆.现在的问题是:我已经在我的本地git repo中提交了一些旧的/错误的克隆提交.我想将这些转移到我的新仓库,但由于磁盘上的根目录不一样,这里概述的简单的rebase策略不起作用(我认为).
我可以用补丁来做,因为在补丁文件中为路径添加前缀git apply
的--directory
参数可以使事情有效,但是我必须通过提交来进行提交.至少,我还没有找到一种方法将多个提交放在一个补丁文件中(没有挤压)并在我的顶部重放它们HEAD
.
如何最好地解决我的问题?
好吧,事实证明:
git format-patch
可以生成包含一系列提交的文件,例如整个分支.
git am
使用该--directory
选项可以逐个重播补丁文件中包含的提交(请参阅此处)并为我提交它们.
问题解决了!