我正在开发一个目前在svn中跟踪的网站项目,但是一旦其他人有时间设置新的服务器和东西,它将转移到git.这是一个很长的故事,但与此同时,我已经从我的一些代码中创建了自己的git存储库,并对它进行了相当多的工作.我没有使用git svn clone,因为我在海外,我的互联网连接很奇怪,需要HTTP代理,而且似乎没有让git svn通过.在任何情况下,我一直在我自己的git存储库中开发,但最终一旦项目实际上正确导入,我将需要将我的工作重新定义为git-svn克隆的东西.会git rebase为此正常工作吗?
一个复杂的问题是,我实际上是在虚拟机中工作,对于许多提交,我没有意识到我没有设置user.name和user.email配置条目,所以提交来自vm的本地用户,这是一种很奇怪 将所有更改收集到diff文件中然后在创建新分支时将它们应用到新分支上会更好吗?
另一个复杂因素是之前使用的SVN有点半心半意,因此生产服务器上实际上没有提交我未提及的更改.实际上,我首先对代码进行了较旧的修订,甚至不是SVN头,所以我遗漏了一些东西.什么是最好的方法?
最后一个问题是,如果我通过导入SVN存储库git svn(我刚刚检查过它似乎现在正在工作)但是我没有添加一个authors文件,我以后能否将我的更改重新绑定到正确导入的分支上有作者文件?
哦,一个新的复杂功能.我自己导入了SVN存储库git svn,这是一个艰苦的过程,在这个缓慢的连接上花费了两天的大部分时间.然而,在最终完成克隆之后,我意识到在SVN存储库中代码都在子目录中,但在我的git存储库中,存储库的根也是目录的根.如果这有点令人困惑,那基本上就是这样
SVN:
\dir\codez
混帐:
\codez
我如何组合这两个存储库?我希望我仍然可以使用rebase,但这似乎是一个非常奇怪的情况.它听起来类似于子模块,但我认为这不是我需要的.
我没有使用git svn clone,因为我在海外,我的网络连接很奇怪,需要HTTP代理
如果你设置它应该工作
http_proxy=http://username:passwword@pprroxyHost:proxyPort
Run Code Online (Sandbox Code Playgroud)
或者你可以试试
http_proxyUser=username
http_proxyPassword=password
http_proxyHost=aProxyHost
http_proxyPort=aProxyPort
Run Code Online (Sandbox Code Playgroud)
请问git rebase能正常运行吗?
一般回答:是的,因为你还没有发布你的Git分支.
详细解答:在将结果合并到master之前,您需要首先重新绑定到您的分支.看到这个答案.
这是首选的工作流程,因为它可以让你解决任何冲突的合并(或如果你想保持你的历史基础重建)的分支到主人面前分支.
实际上,您将在下面看到创建一个特殊的"合并"分支实际上是一个更好的主意.
没意识到我没有设置user.name和user.email配置条目
由于您尚未发布,您可以使用a 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"
'
Run Code Online (Sandbox Code Playgroud)
从您的仓库调用此脚本,您就完成了.
我首先对代码进行了较旧的修订,甚至不是SVN头,因此我遗漏了一些东西.什么是最好的方法?
此实例中的基本工作流程是从当前工作分支创建一个新的"合并"分支,以隔离rebase工作(并解决所有冲突)
在这种delta很重要的合并中,你必须保持工作分支清除您需要进行的所有更改,以便包括:
我以后能否将我的更改重新绑定到一个带有authors文件的正确导入的分支上吗?
我不确定,但我确实这么认为.如果没有,只要你还没有发布任何东西,你可能想filter-branch再次使用重命名脚本......
| 归档时间: |
|
| 查看次数: |
518 次 |
| 最近记录: |