Mak*_*s_F 5 svn git git-svn git-merge git-rebase
我和我的团队伙伴正努力让我们的svn存储库与我们的git存储库保持同步.我们正在开发一个项目,我们被要求在svn存储库(由assembla.com网站托管)上共享我们的代码.由于我们习惯使用git对我们的代码进行版本控制,因此我们决定充分利用git提供的git svn功能.为了分享我们的所有工作并将其分成正确的分支,我们还有一个远程存储库用于git(bitbucket).
到目前为止,我们使用git承诺的所有工作都没有给我们带来任何问题,但是在错误出现后同步svn存储库错误.
我按照这个答案将现有的git存储库推送到SVN以将svn存储库连接到git,但是在几次合并和提交之后,我收到了错误,我无法再拒绝更改.
现在我有一个分支,它是svn/trunk的副本
$ git checkout -b assembla_copy -t svn/trunk
Branch assembla_copy set up to track local ref refs/remotes/svn/trunk.
Switched to a new branch 'assembla_copy'
$ git svn rebase svn/trunk
Current branch assembla_copy is up to date.
Run Code Online (Sandbox Code Playgroud)
要与我的主分支同步它我都试图
git merge master
Run Code Online (Sandbox Code Playgroud)
和
git rebase master
Run Code Online (Sandbox Code Playgroud)
但是,当git rebase master
开始应用自第一次提交以来的所有更改并提供大量冲突时(当我已经在svn/trunk中进行了此更改时,因为在某种程度上我设法将一些更改推送到在线存储库;我们是(目前为r r46),git merge master
顺利但是当我提交时,所有的更改都只在一个提交中总结,它表明"合并分支'主人'成为assembla_copy",而我宁愿它将所有单独的提交提交(就像它在开始时那样......).
如果我从主分支中提交,则所有提交都是分开的,但是主分支是重新分配的,因此所有具有主提交作为父分支的分支显示为与主分支分开的分支.
您能否向我解释一下正确的工作流程,以便拥有一个镜像git存储库的svn存储库,其中所有工作都已完成(svn只是一个副本)? 您是否可以使用标准的git命令而不是复杂的bash脚本,就像我在上周搜索解决方案时在一些答案中看到的那样?
谢谢!
我正在使用以下工作流程,目标是将本地git repo作为远程SVN存储库的某种奇特的svn客户端.
git svn clone ...
.这使得主分支跟随SVN中继 - 在你的情况下这应该是svn/trunk.git checkout -b local
.这将是master
你的情况.git checkout -b feature
git checkout master
git svn rebase
- 获取SVN更新local
git rebase --onto master local feature
- 功能分支与local
基线相比所做的更改将应用于master
分支git checkout master
,git merge feature
git svn dcommit
- 提交对SVN的更改git checkout local
,git merge master
- 就像其他人已经向SVN提交了一些内容一样.希望这可以帮助.