2012-02-07 6 views
7

私はgit-svnを使ってsvnリポジトリを操作しています。レイアウトは標準であり、そして私はローカルリポジトリを作成しました:git-svnを使ってリモートブランチをトランクと同期させる方法

$ git svn clone -s http://mysvnrepo 
(master)$ 

私は、リモート(SVN)のブランチで作業する必要がある - MyBranchので、私は、リモート1を追跡するために、ローカルブランチを作成しました:

(master)$ git checkout -b localMyBranch remotes/MyBranch 
(localMyBranch)$ 
私が働くとローカルブランチにコミットする私が行くように、そして時折私がdcommitん保つ

(localMyBranch)$ git svn dcommit 

一方、他の人がトランクに取り組んでいる、と時々私は戻ってマージしたいですトランクから私のブランチへの変更は、それらを同期させた状態に保ちます。それで私は本当に混乱しています。私はこれをどのように実行するかについての良い情報を見つけることができませんでした。これまでのところ、私はする必要があることを知っています:

(localMyBranch)$ git svn dcommit 
(localMyBranch)$ git checkout master 
(master)$ git svn rebase 

今何ですか?私は、これは行くための正しい方法ではありませんことをお読みください。

(master)$ git checkout localMyBranch 
(localMyBranch)$ git rebase master 

それは混乱にSVNのマージ情報を起こっています。

それでは、リモートのsvnブランチをリモートトランクに「リベースする」、svnのマージ情報を保存するにはどうすればよいですか?

答えて

7

マージを処理するローカルの作業ブランチを作成したいと思うでしょう。重要なのは、リモートのsvnブランチをアクティブに追跡していないブランチが必要なことです。他の方法をマージため

(localMyBranch)$ git checkout -b merge_work 
(merge_work)$ git merge master 
(merge_work)$ git checkout localMyBranch 
(localMyBranch)$ git rebase merge_work 

とその逆:

はこれを試してみてください。

EDIT

あなたはのgit - SVN 1.7.7以降を使用している場合は、リモートリポジトリ上のmergeinfoプロパティを移入するためのgit - のsvnを伝えるために構成設定があります:

git config --global svn.pushmergeinfo true 
+0

ありがとう。 svn POVからマージ情報を保持する予定ですか? –

+0

はい、そうするようにgitを構成する場合。私はそのようなコマンドを含めるように答えを編集します。 –

+0

@ jordan002:それは本当に機能しますか?私は[this](http://stackoverflow.com/a/4908930/158074)の回答がお勧めするように慣れていますが、この方法は単純なようです。また、最初の行は 'git checkout -b merge_work'でしょうか? – rsenna