2009-01-08 89 views
18

我有一个使用git svn clone创建的本地git存储库。我做一个本地分支,做一些改变,切换回主,git svn rebase,如果一切顺利的话,我将我的分支合并回主。那棵树看起来是这样的:为什么git svn dcommit会失去本地分支合并提交的历史记录?

alt text http://img.skitch.com/20090108-cjguu3hcci9x2k17mcftamw8f1.jpg

有时候,后来当我再次git svn rebase,并得到一些偏远的变化,它失去的是a_branch被合并到主线的事实和树是这个样子:

alt text http://img.skitch.com/20090108-kn3bn1qgi5ijw8ja5ijkd75pa3.jpg

这是为什么?我可以阻止它吗?是否有一种简单的方法可以说明分支已合并,或者我应该在完成后删除分支,以便我不忘记已合并和尚未合并的分支?

回答

22

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

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

+1

+1 for git rebase master – JoaoHornburg 2011-07-07 18:53:05

0

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

相关问题