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

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

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

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

为什么?我可以阻止它吗?有没有一种简单的方法来判断一个分支是否已合并,或者我应该在删除分支时删除我的分支,所以我不会忘记已经合并的内容?

有帮助吗?

解决方案

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

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

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top