我是sourceforge上FreeGLUT项目的当前维护者之一。这段代码存储在SVN仓库中,但为了激发其他人的贡献,我想提供一个git repo。我已经在github上有一个git-svn克隆的svn trunk目前在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中提交了一些旧的/错误的克隆提交。我想将这些转移到我的新repo,但由于磁盘上的根目录不一样,所以here概述的简单rebase策略不起作用(我认为)。
我可以使用补丁来完成,因为git apply
具有--directory
参数来为补丁文件中的路径添加前缀以使事情有效,但是我必须通过提交来提交它。至少,我还没有找到一种方法将多个提交放在一个补丁文件中(不用压缩),并在我的HEAD
之上重放它们。
如何最好地解决我的问题?
答案 0 :(得分:6)
好的,结果是:
git format-patch
可以生成包含一系列提交的文件,例如整个分支。--directory
选项的git am
可以逐个重播补丁文件中包含的提交(see here)并为我提交。问题解决了!
答案 1 :(得分:0)
是的,你可以用补丁来做。
git reset --soft 'HEAD^'
重置上次提交。或者如果您有3次提交。做就是了
git reset --soft HEAD~3
我认为this answer解释得很清楚。