当前位置:  开发笔记 > 编程语言 > 正文

有没有办法在事后将svn历史导入git?

如何解决《有没有办法在事后将svn历史导入git?》经验,为你挑选了2个好方法。

我已经有一个svn只读的repo签出(svn co而不是git svn).我已经做了一些更改并使用git提交,然后将其推送到github.

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

各种git-svn指南显示了如何导入一个干净的仓库并传输历史记录,但不是我能找到的已经使用过的记录.



1> VonC..:

为了完成Thilo的好答案,一旦你将svn repo导入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

其他方法包括:

尝试"简单" git pull REPO BRANCH

使用git grafts通过在.git/info/grafts中创建一个文本文件来恢复svn合并历史记录,其中每一行包含一个提交ID,后跟其父项.从那时起,您的本地存储库将表现为该提交实际上来自父母双方.



2> Thilo..:

你可能会做一个svn导入到一个新的git仓库,合并两个库(只加在一起,它可能会抱怨他们是无关的),然后重订你对进口的历史所做的更改.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有