gpt4 book ai didi

git - 追溯 svn 导入到 git

转载 作者:IT王子 更新时间:2023-10-29 01:00:21 24 4
gpt4 key购买 nike

这是我的问题:

  1. 我使用 Subversion 有一段时间,直到我切换到 Git。又过了一些时间。
  2. 没有将历史从 Subversion 导入到 Git。这是一个严格的检查,删除 .svn 目录,然后是 git init。这不是明智之举。
  3. 现在,数以千计的 git 提交之后,我找到了在第一次 git 提交发生时创建的 Subversion 存储库的备份。啊哈!

我想将 git 存储库回滚到第 0 天,正确导入 svn 存储库,然后重新应用所有 git 更改,从而纠正第一次没有做的事情。

有人试过吗?我该怎么做呢?这听起来像是所有 rebase 之母。

最佳答案

听起来像是 git 移植的工作。这方面的文档有点粗略,但基本上你想要做的是:

  1. 在您的存储库中获取 svn 的 git-svn 副本。最简单的方法是在 git svn clone 中,然后在现有存储库中获取 svn clone
  2. 找出哪个基础提交应该跟在 svn 提交之后。所以你可能在某个地方有一个 git 根目录(“最后的 SVN 版本”),它应该遵循最后一个实际的 SVN 版本。这是你刚刚获取的 git-svn clone 的头
  3. 创建一个文件 .git/info/grafts 并将两个 sha 放在一行中。第一个是第一个 git commit,然后是一个空格,然后是最后一个 svn commit。这告诉 git git 提交不是无父项的,但实际上有最后一个 svn 提交作为父项。
  4. 您现在可以使用 gitk/gitx/whatever 检查这两个存储库是否已连接
  5. 要使更改永久生效,请运行 git filter-branch。您可能需要先阅读其联机帮助页。

当然,您也可以对所有分支执行第 3 步。 jpalecek 方法的问题是 rebase 会使你的历史变平,所以如果你有任何 merge , rebase 会丢失它们。过滤器分支方法使您的历史保持完整。

关于git - 追溯 svn 导入到 git,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/459501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com