7

我已经签出了一个 svn 只读存储库(svn co 而不是 git svn)。我使用 git 进行了一些更改和提交,然后将其推送到 github。

此时,git 并没有来自 svn 的所有历史记录。我想知道此时是否有办法提取和导入它。

各种 git-svn 指南展示了如何导入一个干净的 repo 并传输历史,但不是我能找到的已经在使用的。

4

2 回答 2

8

为了完成Thilo好答案,一旦您将 svn 存储库导入到 git 中,您可以使用脚本将该 git 存储库添加到您的存储库中,如合并不相关的 git 分支中所述

#!/bin/bash

set -e

if test -z "$2" -o -n "$3"; then
    echo "usage: $0 REPO BRANCHNAME" >&2
    exit 1
fi

repo=$1
branch=$2

git fetch "$repo" "$branch"

head=$(git rev-parse HEAD)
fetched=$(git rev-parse FETCH_HEAD)
headref=$(git rev-parse --symbolic-full-name HEAD)

git checkout $fetched .

tree=$(git write-tree)

newhead=$(echo "merged in branch '$branch' from $repo" | git commit-tree $tree -p $head -p $fetched)
git-update-ref $headref $newhead $head
git reset --hard $headref

其他方法包括:

于 2009-03-10T08:05:22.127 回答
6

您可能必须将 svn 导入到一个新的git存储库中,合并两个存储库(只需将它们添加在一起,它可能会抱怨它们不相关),然后重新调整您对导入历史所做的更改。

于 2009-03-10T07:15:48.190 回答