为了记录,这里是我做了有效的详细过程。想法是首先检查您的自定义代码中的潜在冲突,然后再处理升级到最新版本。
1)准备你的git仓库。启发:Add a new subversion remote into existing Git repository
$ git clone UPSTREAM
添加git-svn
远程在.git/config
[svn-remote "remote-trunk"]
url = SUBVERSION_TRUNK_FOLDER_URL
fetch = :refs/remotes/git-svn-remote-trunk
运行转换到储存库到GIT中犯
$ git svn fetch --authors-prog=map_authors.sh remote-trunk
2)调整基线上的1.2
分支颠覆的变更:
$ git branch custom-v1.2 v1.2
$ git checkout -b custom-trunk remotes/git-svn-remote-trunk
$ git rebase custom-v1.2
预计第一次重定金提交是空的,必须使用git rebase --skip
进行确认。
在现实生活中,为避免未来发生冲突,我必须将少量文件恢复原始状态,以避免将来的冲突。
在冲突解决的情况下几git rebase --continue
后,现在可以将自定义代码集成到最新的主:
$ git checkout -b custom-master origin/master
$ git merge custom-trunk
*)从Vampire一个更快的选择是直接合并或者与基于标签的分支或者直接用最新origin/master
$ git checkout -b custom-v1.2 v1.2
$ git merge --allow-unrelated-histories remotes/git-svn-custom-trunk
$ git checkout -b custom-master origin/master
$ git merge custom-v1.2
抱歉的历史不是无关的......第一次Subversion提交与Git仓库中的一个标签完全匹配 –
匹配意味着IT是由'git-svn'完成的提交,或者只是它具有相同的内容?如果它只是相同的内容,并不意味着它们是相关的历史。无关的历史意味着这两个分支没有共同的Git提交。这正是您所描述的解决方案。 – Vampire
我同意。我也必须测试它。顺便说一句,输入分支上的'git rebase'似乎也可以。 –