18

我有一个使用git svn clone. 我创建了一个本地分支,进行了一些更改,然后切换回 master,git svn rebase如果一切顺利,我将分支合并回 master。然后树看起来像这样:

替代文字 http://img.skitch.com/20090108-cjguu3hcci9x2k17mcftamw8f1.jpg

有时,稍后当我git svn rebase再次进行一些远程更改时,它会丢失 a_branch 已合并到主线中的事实,并且树看起来像这样:

替代文字 http://img.skitch.com/20090108-kn3bn1qgi5ijw8ja5ijkd75pa3.jpg

这是为什么?我能阻止它吗?有没有一种简单的方法可以告诉分支已合并,或者我应该在完成后删除我的分支,这样我就不会忘记已合并和未合并的内容?

4

2 回答 2

22

git-svn 手册页建议您不要使用合并。这是一个副作用。由于您正在重新设置分支(git svn rebase 有点像“git pull --rebase”),它有效地重写了历史记录。它可能会丢弃任何已经在 subversion 上游的本地提交,例如合并,并只保留那些真正存在于 svn 存储库中的提交。由于本地分支的简单合并提交在 SVN 中没有等效项,因此您只提交“真正的”更改,因此这些是在新的 rebase 主分支中看到的唯一更改。

理想情况下,您的本地分支应该只合并快进,即不生成合并提交。如果不是这种情况,那么您应该考虑将本地分支重新定位到 master 而不是合并它。这避免了完全创建合并提交。

于 2009-01-08T22:19:58.050 回答
0

因为你正在通过svn。当你这样做时,你会丢失很多信息(例如,你也会丢失作者)。

于 2009-01-08T20:39:03.277 回答