我正在使用 git-svn 来处理 svn 存储库。布局是标准的,我创建了本地存储库:
$ git svn clone -s http://mysvnrepo
(master)$
我需要在远程 (svn) 分支 - MyBranch 上工作,所以我创建了一个本地分支来跟踪远程分支:
(master)$ git checkout -b localMyBranch remotes/MyBranch
(localMyBranch)$
我一直在工作并提交到本地分支,偶尔我会提交:
(localMyBranch)$ git svn dcommit
与此同时,其他人正在处理主干,有时我想将主干中的更改 merge 回我的分支以保持它们同步。这就是我真正感到困惑的地方,因为我找不到如何执行此操作的好信息。到目前为止,我知道我需要做的是:
(localMyBranch)$ git svn dcommit
(localMyBranch)$ git checkout master
(master)$ git svn rebase
现在呢?我读到这不是正确的方法:
(master)$ git checkout localMyBranch
(localMyBranch)$ git rebase master
因为它会弄乱 svn 的 merge 信息。
那么将我的远程 svn 分支“ rebase ”到远程主干的最佳方法是什么,同时保留 svn 的 merge 信息?
最佳答案
您需要创建一个本地工作分支来处理您的 merge 。关键是您需要一个不主动跟踪远程 svn 分支的分支。
试试这个:
(localMyBranch)$ git checkout -b merge_work
(merge_work)$ git merge master
(merge_work)$ git checkout localMyBranch
(localMyBranch)$ git rebase merge_work
反之亦然,以另一种方式 merge 。
编辑
如果您使用的是 git-svn 1.7.7 或更高版本,则有一个配置设置告诉 git-svn 填充远程存储库上的 mergeinfo 属性:
git config --global svn.pushmergeinfo true
关于git - 如何使用 git-svn 将远程分支与主干同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9177495/