2012-01-08 19 views
5

既存の SVNリポジトリにプッシュすることで、私の仕事を提出する学校プロジェクトを依頼されました。既存のリポジトリで、すでにいくつかのファイルがあります。これらのファイルや前回のコミットは必要ありません。既存のgitリポジトリを既存のSVNリポジトリにプッシュ

私はgitリポジトリを使用して自分の課題に取り組んでいました。私は歴史を失うことなく、私の仕事をSVNリポジトリにプッシュしたいと思います。これどうやってするの?

+0

歴史をもう少し説明できますか? SVNからクローンを作成するために 'git svn clone'を使用しましたか? – fge

+0

まだありません。それがこの問題に近づく正しい方法であるかどうかはわかりません。これまで私はそれを修正するために何もしなかった。私が見ているすべてのガイドは、裸の/新しいSVNリポジトリを持っていると仮定しています。 –

+0

これは一つの方法であり、あなたは歴史を失うことはないと確信しています。しかし、もっと知る必要があります:あなたの最初のgitインポートは、ある時点でSVNリポジトリのコピーですか?あなたは地元のgit repoで働いていると言いましたが、どのようにしてファイルを操作するのですか? – fge

答えて

6

私はミックスを行うだろう

ここでの詳細な説明があります。つまり、最初にgit svnでsvnをクローンします。そして、この新しいリポジトリでは、あなたの現在のgitリポジトリからの作業をmergeにします。

$ git svn clone http://svn.example.com/project/trunk 
$ cd trunk 
$ git checkout -b mywork 
$ git pull /path/to/current/work/repository/.git master 

は今、あなたは転覆からclonemyworkブランチでの作業を持っています。マージしてプッシュする時間。

$ git checkout master 
$ git merge mywork 
$ git svn dcommit 

お楽しみください!

+1

これは完全に機能しました! –

+1

これを試しましたが、私のgitの履歴はすべて1つのsvn commitとしてプッシュされ、コミット履歴ログ – palaniraja

0

gitのすべての変更がブランチmasterブランチに適用またはマージされていることを前提条件として確認できます。

git-svn rebaseを実行してsvnからの更新をマージし、最後にgit-svn dcommitを実行して変更をコミットできます。 CF - - http://www.viget.com/extend/effectively-using-git-with-subversion/

関連する問題