git svn master来分支去掌握
我跟着这篇文章介绍了如何使用git svn创建和检出分支,以便分支实际上是在svn回收站上创建的。 这很好。
当我完成我的分支时,我完成了对master的结帐并做了一次git合并。 这工作得很好。 然后,我去svn回购提交合并回干,所以发出了一个git svn dcommit。
它试图向分支提交。 尽管我现在已经检查了主分支。 我错过了什么?
$ git svn branch -m "test branch" test_branch
$ git checkout --track -b test_branch remotes/test_branch
$ Hack hack hack...
$ git svn dcommit --dry-run # Make sure you're committing to the right SVN branch
$ git svn dcommit # Commit changes to "test_branch" branch in SVN
$ git checkout master
$ git merge test-branch
$ git svn dcommit # why is this committing to the branch instead of trunk??
这是我的.git / config以防万一
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[svn-remote "svn"]
url = mysvnrepos.com/svn/project
fetch = trunk:refs/remotes/git-svn
branches = branches/*:refs/remotes/*
[branch "test_branch"]
remote = .
merge = refs/remotes/test_branch
我以为有人问过这个问题,但我再也找不到了。 无论如何,带分支的git-svn很复杂。 您必须使用git svn branch
或plain svn mkdir
在svn端创建空分支。 然后你用git签出这些分支,然后在不使用git级别合并的情况下重新提交它们。 这样,git分支在他们的祖先中指定了正确的svn分支,并且dcommit提交到正确的分支。 你可以验证分支git-svn会提交使用git svn info
。