2

我的本地机器上有一个 git-svn 存储库。

我的工作流程如下:

git checkout master
<made bunch o' changes>
git add .
git checkout -b new_branch
git commit -a
git svn rebase
git checkout master

当我签出 master 时,我很惊讶地看到 rebase 的结果已被应用(但减去我的更改)。

这是预期的行为吗?我原以为它会将最新的 SVN 拉入我的分支,而不是 master。就好像它首先在 master 上执行了“svn rebase”,然后用 master 重新设置了我的分支。

贾斯汀

4

1 回答 1

2

如本Git-svn 教程中所述:

您可以向此分支提交不会影响您的master分支的更改,并且您可以在本地分支和主分支之间来回切换。
此外,这些分支中的每一个都连接到 SVN 存储库的主干,因此从这些分支提交的任何更改都将自动合并到 SVN 主干中,并在您下次签出git svn rebase时出现在您的本地主干中。trunk

因此,虽然您的 new_branch HEAD 确实是基于 svn 更改的顶部,但表示 svn 更改已首先应用于主分支,master然后再进行更改new_branch(因为new_branch新提交是在新提交之上完成的master)。

如果短于:

(new_branch)$ git checkout master
(master)    $ git svn rebase
(master)    $ git checkout new_branch
(new_branch)$ git rebase master
于 2012-10-25T07:33:14.583 回答