当前位置:  开发笔记 > 开发工具 > 正文

使用git-svn:Pull,Merge还是Rebase?

如何解决《使用git-svn:Pull,Merge还是Rebase?》经验,为你挑选了1个好方法。

我一直在与git/git-svn学习曲线作斗争,昨晚,作为学习曲线的一部分,我做了非常非常糟糕的事情.我已经纠正了,但我希望能够理解错误.

我有一个svn存储库,我已经克隆了主干和分支(我忽略了标签因为我们不对它们起作用).使用git,我为当前需要使用的每个分支创建了本地分支:

$ git checkout -b trunk svn/trunk
$ git checkout -b feature1 svn/branches/development/feature1
$ git checkout -b maint svn/branches/maintenance/previous-version

我将feature1作为我的活动分支并进行了一些更改,然后被拉开了几天.我回到它昨天想要整合已经对主干进行的任何更改,以便我正在使用最新和最好的.我所做的是首先通过git svn rebase完全更新所有brances(没有其他人在feature1分支上工作过).从我的svn存储库获取最新信息,我试图改变.

使用feature1作为我的活动分支,我做了一个"git rebase trunk",认为我会将更改从trunk更改 feature1分支.结果我非常非常错.合并所有冲突后,我做了一个git svn dcommit,发现我的更改已应用于主干.

我的第一个问题是我思考过程中的核心错误在哪里?我的第二个是,经过大量阅读和谷歌搜索,我看到人们支持拉动,合并和重组.鉴于我想将一个本地分支中应用的更改合并到另一个本地分支,应该是什么怎么做呢?这种情况的最佳做法是什么?

谢谢你的帮助.



1> Paul..:

您遇到的问题是rebase的命令行语法与您(非常合理的,IMO)的期望不符.

$ git checkout feature1
$ git rebase trunk

此序列将未共享的feature1提交添加到trunk的HEAD上,并且您期望它将新的trunk提交放置到feature1的HEAD上.当你知道如何实现Git的数据模型时,语法实际上是有意义的(这无疑是它的原因).但对我而言,这与我的预期相反,在功能上.最好将它作为一种任意的结构来学习而不是试图获得期望.

你明白如何使用git-svn与SVN repo进行交互是正确的.所以忽略你在谷歌搜索中发现的关于推拉和合并的内容 - 这些人几乎都是正确的讨论,好像推拉和合并在git和svn中是相同的.几乎是对的还是错的.

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