简短问题:svn up -r r1130
的git-svn等价物是什么,以便仅更新为编号提交(使用svn编号)?
我使用的是git-svn,所以我既可以使用git,也可以管理我团队的svn存储库的(许多)本地分支。我有一个版本的软件,我将其与特定的硬件设置一起工作。自从我上一次使用它以来,svn repo已经超过了这项工作的稳定、良好的阶段。我希望将本地分支更新为表示稳定提交的编号修订。我可以用svn up -r r1130
在svn中做到这一点,但我更喜欢git。
我总是忘记我过去是如何做到这一点的,我发现自己正在搜索,帮助页面试图找到最好的方法。也许我漏掉了一个措辞不同的问答?
在一棵干净的树上检查旧版本是很容易的,但是当我在树上提交时,“倒带头在它上面重放你的工作……”我通常喜欢的部分意味着我将在添加我的更改之前到达树中的某个点!
现在,我将使用git svn rebase
,然后交互地重新建立基础,以退出我不想要的提交,但我很难相信这是最好的甚至是一个好的方法。
发布于 2012-07-06 15:43:57
我更喜欢rebase
,因为git-svn将不得不在dcommit
之前重新设置您的更改的基址。试着这样做:
git checkout `git svn find-rev r1241` # Go to the svn version of interest
git checkout -b master_r1241 # Create a new brach matching it
git checkout hwTesting # Merge previously created changes
git rebase master_r1241 # rebase on top of not quite up-to-date master branch
你也可以在一个步骤中做到这一点:(如果事情变得非常糟糕,总是可以使用reflog或rebase --abort
进行恢复)。
git checkout hwTesting # Checkout feature branch
git rebase `git svn find-rev r1241` # rebase on top of not quite up-to-date master branch
发布于 2012-04-19 12:30:12
似乎没有一种方法可以一步到位。但是,对于给定的svn修订号,您可以很容易地找到相应的git提交id。试试这个:
git svn find-rev rN
其中N是所需的修订版号。在此之后,使用git checkout来签出历史记录中的那个特定点。
发布于 2012-05-09 04:58:26
我将此留作参考,因为公认的答案提到了这一点。不过,使用一行rebase选项...
这就是我现在要做的。这一次我将从r1130 (在问题中提到)升级到r1241:
git checkout `git svn find-rev r1241` # Go to the svn version of interest
git checkout -b hwTesting_r1241 # Create a new brach matching it
git merge hwTesting_r1130 # Merge previously created changes
这主要是给我想要的,但每次我更新时它都会产生另一个分支。似乎应该有一些方法来告诉git只合并master上的提交,直到并包括git svn find-rev r1241
返回的提交。
https://stackoverflow.com/questions/10220374
复制相似问题