Git SVN和合并分支

unk*_*wnt 14 svn git git-svn

我正在开发一个带有两个分支的svn项目,让我们调用它们

trunk
branches/foo
Run Code Online (Sandbox Code Playgroud)

我的想法是克隆整个svn存储库(告诉git哪个文件夹是主干,标签和分支),在git中进行合并然后将我的合并复制到svn工作副本并从svn提交更改.

在这个工作流程中,我是否可以使用gits合并功能,还是仅适用于使用git创建的分支?

jfs*_*jfs 23

为checkout命令创建别名:

git config alias.co checkout
Run Code Online (Sandbox Code Playgroud)

确保您的本地分支机构是最新的:

git co master    # checkout branch that tracks subversion's trunk
git svn rebase 
git co local/foo # checkout branch that tracks subversion's branches/foo
                 # It assumes that  the branch is created with the command:
                 # `git co -b local/foo remotes/foo`
                 # And the repo was created with:
                 # `git svn clone --stdlayout SVN_REPO_URL`
git svn rebase 
Run Code Online (Sandbox Code Playgroud)

合并分支:

# create new local branch based on `master`
git co master
git co -b merging_branch_foo 
# merge, resolve conflicts, etc (pure git)
git merge local/foo  

# rebase `merging_branch_foo` to linearize history for subversion
git rebase master # or `rebase -i`

# merge `merging_branch_foo` into `master`
git co master
git merge merging_branch_foo # --squash to create single commit

# commit changes to svn
git svn dcommit

# (optionally) delete `merging_branch_foo`
git branch -D merging_branch_foo
Run Code Online (Sandbox Code Playgroud)

  • 这个别名真的有必要吗?我觉得这让答案变得复杂。 (2认同)