没有共同祖先时如何将提交从一个 git 回购移动到另一个
How to move commits from one git repo to another when there is no common ancestor
所以我四处搜索了一下,发现了一些我认为应该起作用的东西,但它们没有起作用(可能是我做错了什么)
故事顺序如下
1) 我们有一个 SVN 存储库
2) 我将 SVN 存储库转换为 Git,但当时没有使用 --stdlayout 参数(犯了错误)所以没有获得所有分支和合并的良好历史记录它只有一个大分支文件夹。所有的提交都在那里,但是分支和合并的历史并没有随之而来。我们获取了 trunk 文件夹的内容(最近的代码),将其移动到 repo 的根目录,并删除了其他所有内容。如果需要,我们可以回去查看其他内容,但看不到正确的分支历史记录。
3) 我们在新的 Git 存储库
中进行了大量代码更改(和分支)
4) 我们决定我们希望能够将文件注释回到它的开头,这在这一点上是我们无法做到的
5) 我获取了 SVN 存储库并将其重新转换为 Git 并且这次使用了 --stdlayout 命令所以我们得到了正确的历史记录。
所以现在的挑战是将自我们最初转换到新存储库以来我们所做的所有提交。所以一个回购在那之前有垃圾历史,在那之后我们所有的新变化,另一个回购在那之前有良好的历史,但之后没有。
到目前为止,我已经全新克隆了第二个存储库,并将包含所有更改的旧存储库添加为远程。我尝试变基、创建和应用补丁、执行 gaft 并使用 git-reset。我所有的尝试都没有成功,但我可能做错了什么。
在初始移动前后仍保留分支和合并历史记录的情况下,实现此目标的最简单方法是什么?
提前感谢大家的帮助,对于我的知识不足深表歉意。这本来就应该不是问题。
不确定这是否有帮助,但这是我的树中发生原始转换(蓝色)以及它与新存储库(粉红色)对齐的点。我基本上只想将初始转换后第一次提交的父级更改为第二次转换的最后一次提交(参见图片)。
Visual Tree
您可以从旧存储库创建一个 diff/patch 文件并将相同的差异应用到新存储库
所以我四处搜索了一下,发现了一些我认为应该起作用的东西,但它们没有起作用(可能是我做错了什么)
故事顺序如下
1) 我们有一个 SVN 存储库
2) 我将 SVN 存储库转换为 Git,但当时没有使用 --stdlayout 参数(犯了错误)所以没有获得所有分支和合并的良好历史记录它只有一个大分支文件夹。所有的提交都在那里,但是分支和合并的历史并没有随之而来。我们获取了 trunk 文件夹的内容(最近的代码),将其移动到 repo 的根目录,并删除了其他所有内容。如果需要,我们可以回去查看其他内容,但看不到正确的分支历史记录。
3) 我们在新的 Git 存储库
中进行了大量代码更改(和分支)4) 我们决定我们希望能够将文件注释回到它的开头,这在这一点上是我们无法做到的
5) 我获取了 SVN 存储库并将其重新转换为 Git 并且这次使用了 --stdlayout 命令所以我们得到了正确的历史记录。
所以现在的挑战是将自我们最初转换到新存储库以来我们所做的所有提交。所以一个回购在那之前有垃圾历史,在那之后我们所有的新变化,另一个回购在那之前有良好的历史,但之后没有。
到目前为止,我已经全新克隆了第二个存储库,并将包含所有更改的旧存储库添加为远程。我尝试变基、创建和应用补丁、执行 gaft 并使用 git-reset。我所有的尝试都没有成功,但我可能做错了什么。
在初始移动前后仍保留分支和合并历史记录的情况下,实现此目标的最简单方法是什么?
提前感谢大家的帮助,对于我的知识不足深表歉意。这本来就应该不是问题。
不确定这是否有帮助,但这是我的树中发生原始转换(蓝色)以及它与新存储库(粉红色)对齐的点。我基本上只想将初始转换后第一次提交的父级更改为第二次转换的最后一次提交(参见图片)。 Visual Tree
您可以从旧存储库创建一个 diff/patch 文件并将相同的差异应用到新存储库