git-svn branch - 如何使分支与trunk保持同步?

时间:2011-01-27 09:43:48

标签: branch git-svn

关于git-svn工作流程有很多问题,但我无法弄清楚这一点:

This section of the svn book讨论了SVN的一个常见做法:你创建一个分支,并在中继更新时继续合并来自主干的更改,以便分支始终包含最新的更改。

我做了git svn branch在svn上创建一个分支,然后设置一个跟踪分支来处理它。 These questions很好地介绍了这个过程。

现在假设对主干进行了更改,我现在要将其合并到分支中。什么是我最好的选择?请注意,我需要保持git-svn的快乐,而不是搞乱使用subversion的分支的人的工作,所以只是做一个rebase可能不会工作。

This question似乎谈论类似的情况,虽然它已经很老了,我不确定底线是什么 - 它似乎表明我应该git checkout master然后{{1但是那可能不对。

我怀疑答案应该是具有git rebase mybranch效果的,最好是设置svn merge属性,但唉,没有mergeinfo ......

1 个答案:

答案 0 :(得分:1)

我真的不明白这个简单的问题是如何在一个多星期内没有得到答案的,到目前为止只有13个观点。我想这是我的错,写不好的问题。

无论如何,我自己弄清楚了。简短版:只需使用git merge代替git rebase

我的困惑来自于在使用master中的更改同步分支时使用git rebase。在本地分支机构工作时,这通常很有效,并保持历史清洁。但是,you should not rebase commits that you have pushed to a public repository和subversion存储库(看起来)足够公开。另一方面,git merge工作得很漂亮,没有任何问题。

所以,很长的答案是:当您想要将主干中的最新更改合并到您正在跟踪的svn分支时,只需执行以下操作:

git merge master
# Handle conflicts, git add when you're done
git commit
git svn dcommit

这将使您的分支与trunk保持同步,但不会设置mergeinfo,因此您可能不应该将svn merge与此类练习混合使用。