git svn master to branch to master
I followed this post on how to create and checkout a branch using git svn so that the branch was actually created on the svn repos. This worked great.
When I was done with my branch, I did a checkout on master and did a git merge. This worked fine. I then went to commit the merge back to the trunk on the svn repos so issues a git svn dcommit.
And it tried to commit to the branch. Even though I now have the master branch checked out. What am I missing?
$ 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??
This is my .git/config in case it matters
[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
I thought someone asked this already, but I can't find it again. Anyway, git-svn with branches is complicated. You must create empty branches on the svn side, with git svn branch
or plain svn mkdir
. Then you check out those branches with git, and rebase commits on top of them without using git-level merges. This way the git branches have the right svn branch indicated in their ancestry, and dcommit commits to the correct branch. You can verify the branch git-svn would commit to using git svn info
.
上一篇: 如何从git仓库中删除原点
下一篇: git svn master来分支去掌握