我工作的一个网站项目目前是跟踪在svn但是要移动一下一旦别人的时间来设置一个新的服务器之类的东西。这是一个很长的故事,但在此期间我做我自己的git库从一些代码我有,并且在它的工作相当多的。我不偏svn克隆,因为我国外和我互联网连接是奇怪的,需要一个代理HTTP,并且它似乎并没有让git svn通过。在任何情况下,我一直发展自己的内容代码,但是最终的,一旦该项目实际上得到进口的适当我需要衍合我的工作上的混帐svn克隆的东西。将 git rebase 工作正常吗?

一个复杂的是,实际上,我是工作在一个虚拟的机和对许多承诺,我没有意识到,我并没有设置的用户。名称和用户。电子邮件配置项目所提交的从虚拟机的本地用户,这是一种奇怪的。它会更好,只要把我变成差异的文件,然后将其应用上的新的分支,一旦它的创造?

另一个复杂的是,SVN前使用的是一种半心半意的,因此实际上有未提交的更改生产服务器上,我没有。实际上,我有一个旧的修订码放在第一位,甚至不是SVN头,这样我丢失了一些东西。什么是最好的方式继续吗?

最后一个问题是,如果我做进SVN库通过 git svn (我只是检查并且它似乎是现在的工作),但我不添加一个作家-文件我将稍后能够衍合我的改变到一个正确的进口分支与一个作家-文件?

哦,一个新的并发症。我进口SVN储存库的自己使用 git svn, ,一个艰苦的过程,采取了更好的一部分,两天在这个缓慢的连接。然而,经过最后整理的克隆,我意识到,在SVN库的代码是所有子目录,但是在我的混库的根源也是根目录。如果这是一个有点令人困惑,它基本上是这样

SVN:

\dir\codez

文件

\codez

我怎么可以结合起来的两个仓库?我希望,我仍然可以使用的变基,但这似乎是一个非常奇怪的情况。这听起来似子模块,但我不认为这是相当我需要什么。

有帮助吗?

解决方案

我不偏svn克隆,因为我国外和我互联网连接是奇怪的,需要一个代理HTTP

它应工作,如果你设置

http_proxy=http://username:passwword@pprroxyHost:proxyPort

或者你可以尝试

http_proxyUser=username
http_proxyPassword=password
http_proxyHost=aProxyHost
http_proxyPort=aProxyPort

将衍合正常工作了吗?

一般的回答:是的,因为你还没有公布你的跟踪。
详细的回答:你会需要重订到你第一支,以前合并的结果的主人。看看 这个答案.
这是首选的工作流程,因为它可以让你解决任何冲突 你的 分合并之前(或变基如果你想保持你的历史)分支机构,到掌握。
实际上,你会看到下面,创建一个特别的"合并"的分支实际上是一个更好的主意。

没有意识到,我并没有设置的用户。名称和用户。电子邮件config项

因为你尚未发表,可以使用 filter-branch 修改提交和更改的用户名和电子邮件

一个小sh脚本可以帮助

#!/bin/sh

git filter-branch --env-filter '

n=$GIT_AUTHOR_NAME
m=$GIT_AUTHOR_EMAIL

case ${GIT_AUTHOR_NAME} in
        aSystemUserName) n="TheActual Name" ; m="TheActual@mailAddress" ;;
esac

export GIT_AUTHOR_NAME="$n"
export GIT_AUTHOR_EMAIL="$m"
export GIT_COMMITTER_NAME="$n"
export GIT_COMMITTER_EMAIL="$m"
'

叫这个脚本从你的回购和你都做了。

我有一个旧的修订码放在第一位,甚至不是SVN头,这样我丢失了一些东西。什么是最好的方式继续吗?

基本的工作流程,在这个实例是创建一个新的"合并"支从当前工作分为隔离衍合努力(和解决所有的冲突)
在这种合并在三角洲重要的是,必须保持你的工作分清理的所有更改将需要做,以便包括:

  • 代码从SVN
  • 代码你没有得到直接从SVN库。

我将稍后能够衍合我的改变到一个正确的进口分支与一个作家-文件?

我不确定但我不这么认为。如果不是,只要你有没有公布任何事,你可能想要使用 filter-branch 重命名的脚本了...

其他提示

git-rebase 取决于具有一个共同承诺的某个地方的历史。它也会发生在一个单一的储存库。这听起来就像你正要结束的情况下,(一)新的混帐svn进口回购协议是独立于你的,和(b)将不会有共同的承诺两者之间的关系。你可能会最终需要做到这一经过修补程序,但混帐可以帮助你。检查出的联机手册为 git-format-patchgit-am.第一次可以产生一系列修补程序从一系列承诺,以及第二,可以采取这一系列的修补和应用它们--和所有提交信息,这样将被保留。

这将会为您提供了一个机会,以解决你的用户。名字/电子邮件的问题-你可以简单地修改它们的标题的修补程序,并确保他们设置正确,在新的进口回购之前,你运用你补丁!

最好的方式来处理你出的日期开始的地方("老年修订的...那甚至不是SVN头")是可能会是:

  • 获得SVN回购入一个良好状态,所有变动承诺
  • 进口与混帐svn
  • 创造并检查了一个分支在一个古老的犯你开始的工作
  • 运用你的系列补丁
  • 合并这一分支纳入主,对应于目前的SVN头

幸运的是我而不用你,我从来不需要使用混帐svn,所以我不能回答你的作家-文件的问题明确。然而,如果我理解正确的话,本作者文件翻译SVN作者进入git作者。如果提交人改变上个混承诺,散列将会改变。因此,重要的是不要惹的这个转换表,并得到它的权利的第一次。

有很多问题中的一个在这里,所以随意发表评论并要求提供更多的如果我错过的事情。

您可以使用低级工具创建新的未出生的分支:

$ git symbolic-ref HEAD refs/heads/new_branch

使用现代git,您可以使用“git rebase”的 - root 选项来修改整个分支。

这可能会或可能不会对您的情况有所帮助。 YMMV。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top