从旧的SVN存储库中检出与特定修订版本对应的git提交?

4
我将我的代码库从SVN迁移到了Git。我使用了这个网站。现在我在版本X中发现了一个错误。如果我只知道旧的SVN代码库中的版本号,该如何从我的Git代码库中检出代码呢?
谢谢你的帮助。
1个回答

8

使用git svn find-rev子命令可以找到对应于Subversion版本的git提交。例如,如果您正在寻找对应于Subversion版本3431的提交,可以执行以下操作:

$ git svn find-rev r3431
42ed8bcf690fd0c655c5cee91b09258318fc56e8

然后,要检出该修订版本,只需使用第一行的对象名称,例如:如果是:

commit 42ed8bcf690fd0c655c5cee91b09258318fc56e8
Author: torstenrohlfing <torstenrohlfing@42a5c34f-2066-0410-bec5-ba365beb4995>
Date:   Fri Sep 9 17:11:38 2011 +0000

    FIX: do not update time stamps on pre-existing files that did not get updated.


    git-svn-id: https://www.nitrc.org/svn/cmtk/trunk@3431 42a5c34f-2066-0410-bec5-ba365beb4995

您可以做以下事情:
git checkout 42ed8bcf69

如果您想尝试该版本,请执行此操作。(请注意,这将分离 HEAD,因此如果您不知道这意味着什么,建议先搜索“detached HEAD”)


1
嗨,那不起作用。我在提交日志中没有这个 trunk-id。 - Iron
你有多个git分支吗?最近运行了git svn rebase命令吗?你能否在日志中找到带有git-svn-id行的最新提交记录?(例如,使用 git log --grep=git-svn-id - Mark Longair
git svn rebase:我的工作树历史记录中没有上游svn信息。那么它没有获取整个仓库吗? - Iron
太好了,我很高兴听到你解决了那个问题 :) - Mark Longair
1
这个的一行命令可以是:git svn fetch && git checkout $(git svn find-rev r3431)。请注意,此版本需要存在。 - Luís Bianchin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接