我正在使用git-svn来对抗svn存储库。布局是标准的,我用:
创建了本地存储库$ git svn clone -s http://mysvnrepo
(master)$
我需要在远程(svn)分支 - MyBranch上工作,所以我创建了一个本地分支来跟踪远程分支:
(master)$ git checkout -b localMyBranch remotes/MyBranch
(localMyBranch)$
我继续工作,并在我去的时候致力于当地的分支机构,偶尔我会这样做:
(localMyBranch)$ git svn dcommit
与此同时,其他人正在使用主干,并且我不时会将更改从主干合并回我的分支以保持同步。这就是我真的很困惑的地方,因为我找不到如何执行此操作的良好信息。到目前为止,我知道我需要这样做:
(localMyBranch)$ git svn dcommit
(localMyBranch)$ git checkout master
(master)$ git svn rebase
现在怎样?我读到这不是正确的方法:
(master)$ git checkout localMyBranch
(localMyBranch)$ git rebase master
因为它会破坏svn的合并信息。
那么将我的远程svn分支“重新绑定”到远程主干的最佳方法是什么,保留svn的合并信息?
答案 0 :(得分:7)
您需要创建一个本地工作分支来处理您的合并。关键是你需要一个没有主动跟踪远程svn分支的分支。
试试这个:
(localMyBranch)$ git checkout -b merge_work
(merge_work)$ git merge master
(merge_work)$ git checkout localMyBranch
(localMyBranch)$ git rebase merge_work
反之亦然,以另一种方式合并。
修改强>
如果你使用git-svn 1.7.7或更高版本,有一个配置设置告诉git-svn填充远程存储库上的mergeinfo属性:
git config --global svn.pushmergeinfo true