【问题标题】:Why does git svn dcommit lose the history of merge commits for local branches?为什么 git svn dcommit 会丢失本地分支的合并提交历史?
【发布时间】:2010-09-30 08:36:54
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: git git-svn rebase


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-12-18
        • 2010-09-29
        • 2015-04-17
        • 1970-01-01
        • 1970-01-01
        • 2012-09-19
        • 2011-11-08
        • 2014-09-01
        • 1970-01-01
        相关资源
        最近更新 更多