2012-03-02 6 views
1

私の通常のgit-svnワークフローは、ローカルブランチで自分の仕事をしてから、マスターにマージし、そこからをコミットしてsvnトランクに記録することです。、gitブランチが追跡しているsvnブランチを変更するにはどうすればよいですか?

しかし、私の現在のローカルブランチ(foo)では、この作業は、トランクにコミットするのが快適であると感じる前に、この作業がしばらく前から行われることを認識しています。私はsvnブランチによって "バック"したいので、私の仕事はサーバー上にある。

私は現在のトランクから新しいのsvnブランチ(svnFoo)を作成しました、私は基本的に「移動」したいfooように、私はsvn dcommitそれから、そのコミットのすべてがsvnFoo代わりのtrunkに記録され得るとき。

これを行うにはどのような方法が最適ですか?

答えて

1

git rebaseはあなたの友人です。ので、あなたの地元のGitリポジトリをリモートsvnFooブランチを知っているあなたはローカルmasterブランチからローカルfooブランチを作成したと仮定すると、あなたが最近git svn fetchをやったことは、あなたが望む魔法のコマンドはこれです:

git rebase --onto remotes/svnFoo $(git merge-base master foo) foo 

この意志foomasterから分岐したコミットを見つけて、そこからfooブランチの先頭にあるすべてのコミットをsvnFooブランチの上に再生します。その後のgit svn dcommitは、トランクではなくサブバージョンsvnFooブランチにコミットします。

+0

それでした、ありがとうございました! –

関連する問題