5

我是sourceforge 上FreeGLUT项目的当前维护者之一。此代码存储在 SVN 存储库中,但为了激发其他人的贡献,我想提供一个 git 存储库。我已经在 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 存储库中已经有一些旧/错误克隆的提交。我想将这些转移到我的新仓库中,但由于磁盘上的根目录不同,因此此处概述的简单变基策略不起作用(我认为)。

我可以使用补丁来做到这一点,就像在补丁文件中为路径添加前缀git apply--directory参数一样,可以让事情正常工作,但是我必须通过提交来提交。至少,我还没有找到一种方法将多个提交放在一个补丁文件中(没有压缩)并在我的HEAD.

如何最好地解决我的问题?

4

2 回答 2

8

好的,事实证明:

  1. git format-patch可以生成包含一系列提交的文件,例如整个分支。
  2. git am使用该--directory选项可以一一重播补丁文件中包含的提交(请参见此处)并为我提交。

问题解决了!

于 2014-01-03T01:54:20.677 回答
0

是的,你可以用补丁来做到这一点。

  1. 使用 重置上次提交git reset --soft 'HEAD^'。或者如果你有 3 个提交。做就是了 git reset --soft HEAD~3
  2. 做补丁。

我认为这个答案很好地解释了它。

于 2014-01-02T16:14:43.420 回答